Skip to content

Commit 694c316

Browse files
Merge remote-tracking branch 'upstream/master'
2 parents 1efd87a + 27b2d9b commit 694c316

File tree

5 files changed

+165
-1
lines changed

5 files changed

+165
-1
lines changed

solution/084.Largest Rectangle in Histogram/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
注意,压入栈中的是柱子的索引,而非柱子的高度。(通过索引可以获得高度、距离差)
3030

31-
**Java版实现:**
31+
3232

3333
```java
3434
class Solution {

solution/090.Subsets II/README.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
## 子集 II
2+
3+
### 问题描述
4+
5+
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
6+
7+
说明:解集不能包含重复的子集。
8+
9+
```
10+
示例:
11+
输入: [1,2,2]
12+
输出:
13+
[
14+
[2],
15+
[1],
16+
[1,2,2],
17+
[2,2],
18+
[1,2],
19+
[]
20+
]
21+
```
22+
23+
24+
### 思路
25+
26+
回溯+排序去重
27+
28+
```CPP
29+
class Solution {
30+
public:
31+
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
32+
vector<int> tmp;
33+
vector<vector<int>> ans;
34+
int len = nums.size();
35+
if(len == 0)return ans;
36+
dfs(nums,ans,tmp,len,0);
37+
return ans;
38+
}
39+
40+
void dfs(vector<int> &nums,vector<vector<int>> &ans,vector<int> tmp,int len,int k){
41+
sort(tmp.begin(),tmp.end());
42+
auto iter = find(ans.begin(),ans.end(),tmp);
43+
if(iter == ans.end())ans.push_back(tmp);
44+
for(int i = k;i<len;i++){
45+
tmp.push_back(nums[i]);
46+
dfs(nums,ans,tmp,len,i+1);
47+
tmp.pop_back();
48+
}
49+
}
50+
};
51+
```

solution/090.Subsets II/Solution.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
4+
vector<int> tmp;
5+
vector<vector<int>> ans;
6+
int len = nums.size();
7+
if(len == 0)return ans;
8+
dfs(nums,ans,tmp,len,0);
9+
return ans;
10+
}
11+
12+
void dfs(vector<int> &nums,vector<vector<int>> &ans,vector<int> tmp,int len,int k){
13+
sort(tmp.begin(),tmp.end());
14+
auto iter = find(ans.begin(),ans.end(),tmp);
15+
if(iter == ans.end())ans.push_back(tmp);
16+
for(int i = k;i<len;i++){
17+
tmp.push_back(nums[i]);
18+
dfs(nums,ans,tmp,len,i+1);
19+
tmp.pop_back();
20+
}
21+
}
22+
};
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
## 杨辉三角
2+
3+
### 问题描述
4+
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
5+
6+
![杨辉三角](https://upload.wikimedia.org/wikipedia/commons/0/0d/PascalTriangleAnimated2.gif)
7+
8+
在杨辉三角中,每个数是它左上方和右上方的数的和。
9+
10+
```
11+
示例:
12+
输入: 5
13+
输出:
14+
[
15+
[1],
16+
[1,1],
17+
[1,2,1],
18+
[1,3,3,1],
19+
[1,4,6,4,1]
20+
]
21+
```
22+
23+
### 思路
24+
25+
杨辉三角的特征是:
26+
27+
- 所有行的首元素和末尾元素都是1
28+
- 除第一和第二行外,所有非首端末端元素都是前一行同列与前一列之和`matrix[i][j] = matrix[i-1][j]+matrix[i-1][j-1];`
29+
30+
```CPP
31+
class Solution {
32+
public:
33+
vector<vector<int>> generate(int numRows) {
34+
vector<vector<int>> ans;
35+
36+
for(int i = 0;i<numRows;i++){
37+
vector<int> tmp(i+1);
38+
tmp[0] = 1;//最左侧为1
39+
for(int j = 1;j<=i;j++){
40+
if(i == j)//最右侧为1
41+
{
42+
tmp[j] = 1;
43+
break;
44+
}
45+
tmp[j] = ans[i-1][j-1] + ans[i-1][j];
46+
}
47+
ans.push_back(tmp);
48+
}
49+
return ans;
50+
}
51+
};
52+
```
53+
54+
```JS
55+
const generate = function(numRows){
56+
let arr = [];
57+
for(let i = 0; i < numRows; i++){
58+
let row = [];
59+
row[0]=1;
60+
row[i] = 1;
61+
62+
for(let j = 1; j < row.length - 1; j++){
63+
row[j] = arr[i-1][j-1] + arr[i-1][j];
64+
}
65+
arr.push(row);
66+
}
67+
return arr;
68+
}
69+
70+
```
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> generate(int numRows) {
4+
vector<vector<int>> ans;
5+
6+
for(int i = 0;i<numRows;i++){
7+
vector<int> tmp(i+1);
8+
tmp[0] = 1;//最左侧为1
9+
for(int j = 1;j<=i;j++){
10+
if(i == j)//最右侧为1
11+
{
12+
tmp[j] = 1;
13+
break;
14+
}
15+
tmp[j] = ans[i-1][j-1] + ans[i-1][j];
16+
}
17+
ans.push_back(tmp);
18+
}
19+
return ans;
20+
}
21+
};

0 commit comments

Comments
 (0)