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 7c8549d

Browse files
Merge branch 'youngyangyang04:master' into master
2 parents ebe4ea6 + c20684f commit 7c8549d

File tree

3 files changed

+69
-11
lines changed

3 files changed

+69
-11
lines changed

‎problems/0337.打家劫舍III.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,41 @@ class Solution:
368368
return (val1, val2)
369369
```
370370

371+
Go:
372+
373+
> 动态规划
374+
375+
```go
376+
func rob(root *TreeNode) int {
377+
res := robTree(root)
378+
return max(res[0], res[1])
379+
}
380+
381+
func max(a, b int) int {
382+
if a > b {
383+
return a
384+
}
385+
return b
386+
}
387+
388+
func robTree(cur *TreeNode) []int {
389+
if cur == nil {
390+
return []int{0, 0}
391+
}
392+
// 后序遍历
393+
left := robTree(cur.Left)
394+
right := robTree(cur.Right)
395+
396+
// 考虑去偷当前的屋子
397+
robCur := cur.Val + left[0] + right[0]
398+
// 考虑不去偷当前的屋子
399+
notRobCur := max(left[0], left[1]) + max(right[0], right[1])
400+
401+
// 注意顺序:0:不偷,1:去偷
402+
return []int{notRobCur, robCur}
403+
}
404+
```
405+
371406
JavaScript:
372407

373408
> 动态规划

‎problems/0416.分割等和子集.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,32 @@ class Solution:
226226
return taraget == dp[taraget]
227227
```
228228
Go:
229+
```go
230+
// 分割等和子集 动态规划
231+
// 时间复杂度O(n^2) 空间复杂度O(n)
232+
func canPartition(nums []int) bool {
233+
sum := 0
234+
for _, num := range nums {
235+
sum += num
236+
}
237+
// 如果 nums 的总和为奇数则不可能平分成两个子集
238+
if sum % 2 == 1 {
239+
return false
240+
}
241+
242+
target := sum / 2
243+
dp := make([]int, target + 1)
244+
245+
for _, num := range nums {
246+
for j := target; j >= num; j-- {
247+
if dp[j] < dp[j - num] + num {
248+
dp[j] = dp[j - num] + num
249+
}
250+
}
251+
}
252+
return dp[target] == target
253+
}
254+
```
229255

230256
```go
231257
func canPartition(nums []int) bool {

‎problems/剑指Offer58-II.左旋转字符串.md

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -200,17 +200,14 @@ func reverse(b []byte, left, right int){
200200
JavaScript:
201201

202202
```javascript
203-
var reverseLeftWords = function (s, n) {
204-
const reverse = (str, left, right) => {
205-
let strArr = str.split("");
206-
for (; left < right; left++, right--) {
207-
[strArr[left], strArr[right]] = [strArr[right], strArr[left]];
208-
}
209-
return strArr.join("");
210-
}
211-
s = reverse(s, 0, n - 1);
212-
s = reverse(s, n, s.length - 1);
213-
return reverse(s, 0, s.length - 1);
203+
var reverseLeftWords = function(s, n) {
204+
const length = s.length;
205+
let i = 0;
206+
while (i < length - n) {
207+
s = s[length - 1] + s;
208+
i++;
209+
}
210+
return s.slice(0, length);
214211
};
215212
```
216213

0 commit comments

Comments
(0)

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