Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 84dec64

Browse files
Merge branch 'master' of github.com:youngyangyang04/leetcode-master
2 parents 882defc + fd820f6 commit 84dec64

10 files changed

+256
-25
lines changed

‎problems/0034.在排序数组中查找元素的第一个和最后一个位置.md‎

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,57 @@ class Solution:
389389
return [leftBorder, rightBorder]
390390
```
391391

392+
### Rust
393+
394+
```rust
395+
396+
impl Solution {
397+
pub fn search_range(nums: Vec<i32>, target: i32) -> Vec<i32> {
398+
let right_border = Solution::get_right_border(&nums, target);
399+
let left_border = Solution::get_left_border(&nums, target);
400+
if right_border == -2 || left_border == -2 {
401+
return vec![-1, -1];
402+
}
403+
if right_border - left_border > 0 {
404+
return vec![left_border, right_border - 1];
405+
}
406+
vec![-1, -1]
407+
}
408+
409+
pub fn get_right_border(nums: &Vec<i32>, target: i32) -> i32 {
410+
let mut left = 0;
411+
let mut right = nums.len();
412+
let mut right_border: i32 = -2;
413+
while left < right {
414+
let mid = (left + right) / 2;
415+
if nums[mid] > target {
416+
right = mid;
417+
} else {
418+
left = mid + 1;
419+
right_border = left as i32;
420+
}
421+
}
422+
right_border as i32
423+
}
424+
425+
pub fn get_left_border(nums: &Vec<i32>, target: i32) -> i32 {
426+
let mut left = 0;
427+
let mut right = nums.len();
428+
let mut left_border: i32 = -2;
429+
while left < right {
430+
let mid = (left + right) / 2;
431+
if nums[mid] >= target {
432+
right = mid;
433+
left_border = right as i32;
434+
} else {
435+
left = mid + 1;
436+
}
437+
}
438+
left_border as i32
439+
}
440+
}
441+
```
442+
392443
### Go
393444

394445
```go

‎problems/0062.不同路径.md‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,5 +452,25 @@ object Solution {
452452
}
453453
```
454454

455+
### c#
456+
457+
```c#
458+
public class Solution
459+
{
460+
public int UniquePaths(int m, int n)
461+
{
462+
int[] dp = new int[n];
463+
for (int i = 0; i < n; i++)
464+
dp[i] = 1;
465+
for (int i = 1; i < m; i++)
466+
for (int j = 1; j < n; j++)
467+
dp[j] += dp[j - 1];
468+
return dp[n - 1];
469+
}
470+
}
471+
```
472+
473+
474+
455475
-----------------------
456476
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

‎problems/0063.不同路径II.md‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,8 +382,37 @@ var uniquePathsWithObstacles = function(obstacleGrid) {
382382

383383
return dp[m - 1][n - 1]
384384
};
385+
386+
// 版本二:内存优化,直接以原数组为dp数组
387+
var uniquePathsWithObstacles = function(obstacleGrid) {
388+
const m = obstacleGrid.length;
389+
const n = obstacleGrid[0].length;
390+
for (let i = 0; i < m; i++) {
391+
for (let j = 0; j < n; j++) {
392+
if (obstacleGrid[i][j] === 0) {
393+
// 不是障碍物
394+
if (i === 0) {
395+
// 取左边的值
396+
obstacleGrid[i][j] = obstacleGrid[i][j - 1] ?? 1;
397+
} else if (j === 0) {
398+
// 取上边的值
399+
obstacleGrid[i][j] = obstacleGrid[i - 1]?.[j] ?? 1;
400+
} else {
401+
// 取左边和上边的和
402+
obstacleGrid[i][j] = obstacleGrid[i - 1][j] + obstacleGrid[i][j - 1];
403+
}
404+
} else {
405+
// 如果是障碍物,则路径为0
406+
obstacleGrid[i][j] = 0;
407+
}
408+
}
409+
}
410+
return obstacleGrid[m - 1][n - 1];
411+
};
385412
```
386413
414+
415+
387416
### TypeScript
388417
389418
```typescript

‎problems/0070.爬楼梯.md‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,5 +425,25 @@ object Solution {
425425
}
426426
```
427427

428+
### C#
429+
430+
```c#
431+
public class Solution {
432+
public int ClimbStairs(int n) {
433+
if(n<=2) return n;
434+
int[] dp = new int[2] { 1, 2 };
435+
for (int i = 3; i <= n; i++)
436+
{
437+
int temp = dp[0] + dp[1];
438+
dp[0] = dp[1];
439+
dp[1] = temp;
440+
}
441+
return dp[1];
442+
}
443+
}
444+
```
445+
446+
447+
428448
-----------------------
429449
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

‎problems/0496.下一个更大元素I.md‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,32 @@ class Solution {
221221
return res;
222222
}
223223
}
224+
225+
// 版本2
226+
class Solution {
227+
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
228+
HashMap<Integer, Integer> map = new HashMap<>();
229+
for (int i = 0; i < nums1.length; i++) {
230+
map.put(nums1[i], i);
231+
}
232+
233+
int[] res = new int[nums1.length];
234+
Stack<Integer> stack = new Stack<>();
235+
Arrays.fill(res, -1);
236+
237+
for (int i = 0; i < nums2.length; i++) {
238+
while (!stack.isEmpty() && nums2[stack.peek()] < nums2[i]) {
239+
int pre = nums2[stack.pop()];
240+
if (map.containsKey(pre)) {
241+
res[map.get(pre)] = nums2[i];
242+
}
243+
}
244+
stack.push(i);
245+
}
246+
247+
return res;
248+
}
249+
}
224250
```
225251
Python3:
226252
```python

‎problems/0509.斐波那契数.md‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,5 +370,45 @@ object Solution {
370370
}
371371
```
372372

373+
### C#
374+
375+
动态规划:
376+
377+
```c#
378+
public class Solution
379+
{
380+
public int Fib(int n)
381+
{
382+
if(n<2) return n;
383+
int[] dp = new int[2] { 0, 1 };
384+
for (int i = 2; i <= n; i++)
385+
{
386+
int temp = dp[0] + dp[1];
387+
dp[0] = dp[1];
388+
dp[1] = temp;
389+
}
390+
return dp[1];
391+
}
392+
}
393+
```
394+
395+
递归:
396+
397+
```c#
398+
public class Solution
399+
{
400+
public int Fib(int n)
401+
{
402+
if(n<2)
403+
return n;
404+
return Fib(n-1)+Fib(n-2);
405+
}
406+
}
407+
```
408+
409+
410+
411+
412+
373413
-----------------------
374414
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

‎problems/0583.两个字符串的删除操作.md‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,28 @@ public:
128128
129129
Java:
130130
```java
131+
// dp数组中存储word1和word2最长相同子序列的长度
132+
class Solution {
133+
public int minDistance(String word1, String word2) {
134+
int len1 = word1.length();
135+
int len2 = word2.length();
136+
int[][] dp = new int[len1 + 1][len2 + 1];
137+
138+
for (int i = 1; i <= len1; i++) {
139+
for (int j = 1; j <= len2; j++) {
140+
if (word1.charAt(i - 1) == word2.charAt(j - 1)) {
141+
dp[i][j] = dp[i - 1][j - 1] + 1;
142+
} else {
143+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
144+
}
145+
}
146+
}
147+
148+
return len1 + len2 - dp[len1][len2] * 2;
149+
}
150+
}
151+
152+
// dp数组中存储需要删除的字符个数
131153
class Solution {
132154
public int minDistance(String word1, String word2) {
133155
int[][] dp = new int[word1.length() + 1][word2.length() + 1];

‎problems/0704.二分查找.md‎

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -225,16 +225,15 @@ class Solution:
225225
def search(self, nums: List[int], target: int) -> int:
226226
if nums is None or len(nums)==0:
227227
return -1
228-
l=0
229-
r=len(nums)-1
230-
while (l<=r):
231-
m = round(l+(r-l)/2)
232-
if nums[m] == target:
233-
return m
234-
elif nums[m] > target:
235-
r=m-1
228+
left,right=0,len(nums)
229+
while (left<right):
230+
middle = round(left+(right-left)//2)
231+
if nums[middle] == target:
232+
return middle
233+
elif nums[middle] > target:
234+
right=middle
236235
else:
237-
l=m+1
236+
left=middle+1
238237
return -1
239238
```
240239

‎problems/0746.使用最小花费爬楼梯.md‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,5 +370,26 @@ object Solution {
370370
}
371371
```
372372

373+
### C#
374+
375+
```c#
376+
public class Solution
377+
{
378+
public int MinCostClimbingStairs(int[] cost)
379+
{
380+
int[] dp=new int[2] { cost[0], cost[1] };
381+
for (int i = 2; i < cost.Length; i++)
382+
{
383+
int temp = Math.Min(dp[0], dp[1])+cost[i];
384+
dp[0]=dp[1];
385+
dp[1]=temp;
386+
}
387+
return Math.Min(dp[0],dp[1]);
388+
}
389+
}
390+
```
391+
392+
393+
373394
-----------------------
374395
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

‎problems/1035.不相交的线.md‎

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -74,24 +74,27 @@ public:
7474
7575
7676
Java:
77-
```java
77+
```java
7878
class Solution {
79-
public int maxUncrossedLines(int[] A, int[] B) {
80-
int [][] dp = new int[A.length+1][B.length+1];
81-
for(int i=1;i<=A.length;i++) {
82-
for(int j=1;j<=B.length;j++) {
83-
if (A[i-1]==B[j-1]) {
84-
dp[i][j]=dp[i-1][j-1]+1;
85-
}
86-
else {
87-
dp[i][j]=Math.max(dp[i-1][j], dp[i][j-1]);
88-
}
89-
}
90-
}
91-
return dp[A.length][B.length];
92-
}
79+
public int maxUncrossedLines(int[] nums1, int[] nums2) {
80+
int len1 = nums1.length;
81+
int len2 = nums2.length;
82+
int[][] dp = new int[len1 + 1][len2 + 1];
83+
84+
for (int i = 1; i <= len1; i++) {
85+
for (int j = 1; j <= len2; j++) {
86+
if (nums1[i - 1] == nums2[j - 1]) {
87+
dp[i][j] = dp[i - 1][j - 1] + 1;
88+
} else {
89+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
90+
}
91+
}
92+
}
93+
94+
return dp[len1][len2];
95+
}
9396
}
94-
```
97+
```
9598

9699
Python:
97100
```python

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /