Skip to content

Commit 34118c8

Browse files
author
lucifer
committed
feat: CPP
1 parent 296bf78 commit 34118c8

File tree

3 files changed

+83
-6
lines changed

3 files changed

+83
-6
lines changed

problems/229.majority-element-ii.md

+30-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,36 @@ https://leetcode-cn.com/problems/majority-element-ii/
7171

7272
## 代码
7373

74-
JavaScript 代码:
74+
代码支持:CPP,JS
75+
76+
CPP Code:
77+
78+
```cpp
79+
class Solution {
80+
public:
81+
vector<int> majorityElement(vector<int>& nums) {
82+
int c1 = 0, c2 = 0, v1 = 0, v2 = 1;
83+
for (int n : nums) {
84+
if (v1 == n) ++c1;
85+
else if (v2 == n) ++c2;
86+
else if (!c1) v1 = n, ++c1;
87+
else if (!c2) v2 = n, ++c2;
88+
else --c1, --c2;
89+
}
90+
c1 = c2 = 0;
91+
for (int n : nums) {
92+
if (v1 == n) ++c1;
93+
if (v2 == n) ++c2;
94+
}
95+
vector<int> v;
96+
if (c1 > nums.size() / 3) v.push_back(v1);
97+
if (c2 > nums.size() / 3) v.push_back(v2);
98+
return v;
99+
}
100+
};
101+
```
102+
103+
JS Code:
75104
76105
```js
77106
/*

problems/279.perfect-squares.md

+25-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ https://leetcode-cn.com/problems/perfect-squares/
1111
示例 1:
1212
1313
输入: n = 12
14-
输出: 3
14+
输出: 3
1515
解释: 12 = 4 + 4 + 4.
1616
示例 2:
1717
@@ -31,7 +31,7 @@ https://leetcode-cn.com/problems/perfect-squares/
3131
- 阿里
3232
- 百度
3333
- 字节
34-
34+
3535
## 思路
3636

3737
直接递归处理即可,但是这种暴力的解法很容易超时。如果你把递归的过程化成一棵树的话(其实就是递归树),
@@ -70,7 +70,7 @@ function d(n, level) {
7070
* @param {number} n
7171
* @return {number}
7272
*/
73-
var numSquares = function(n) {
73+
var numSquares = function (n) {
7474
return d(n, 0);
7575
};
7676
```
@@ -98,12 +98,33 @@ for (let i = 1; i <= n; i++) {
9898

9999
## 代码
100100

101+
代码支持:CPP,JS
102+
103+
CPP Code:
104+
105+
```cpp
106+
class Solution {
107+
public:
108+
int numSquares(int n) {
109+
static vector<int> dp{0};
110+
while (dp.size() <= n) {
111+
int m = dp.size(), minVal = INT_MAX;
112+
for (int i = 1; i * i <= m; ++i) minVal = min(minVal, 1 + dp[m - i * i]);
113+
dp.push_back(minVal);
114+
}
115+
return dp[n];
116+
}
117+
};
118+
```
119+
120+
JS Code:
121+
101122
```js
102123
/**
103124
* @param {number} n
104125
* @return {number}
105126
*/
106-
var numSquares = function(n) {
127+
var numSquares = function (n) {
107128
if (n <= 0) {
108129
return 0;
109130
}

problems/40.combination-sum-ii.md

+28-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ candidates 中的每个数字在每个组合中只能使用一次。
6969

7070
## 代码
7171

72-
- 语言支持: JavascriptPython3
72+
- 语言支持: Javascript, Python3, CPP
7373

7474
```js
7575
function backtrack(list, tempList, nums, remain, start) {
@@ -142,6 +142,33 @@ class Solution:
142142
path.pop()
143143
```
144144

145+
CPP Code:
146+
147+
```cpp
148+
class Solution {
149+
vector<vector<int>> ans;
150+
void backtrack(vector<int> &A, int target, int start, vector<int> &path) {
151+
if (!target) {
152+
ans.push_back(path);
153+
return;
154+
}
155+
for (int i = start; i < A.size() && target >= A[i]; ++i) {
156+
if (i != start && A[i] == A[i - 1]) continue;
157+
path.push_back(A[i]);
158+
dfs(A, target - A[i], i + 1, path);
159+
path.pop_back();
160+
}
161+
}
162+
public:
163+
vector<vector<int>> combinationSum2(vector<int>& A, int target) {
164+
sort(A.begin(), A.end());
165+
vector<int> path;
166+
backtrack(A, target, 0, path);
167+
return ans;
168+
}
169+
};
170+
```
171+
145172
## 相关题目
146173
147174
- [39.combination-sum](./39.combination-sum.md)

0 commit comments

Comments
 (0)