Skip to content

Commit 25de06d

Browse files
committed
Merge branch 'develop'
2 parents e83d2fb + ccc608b commit 25de06d

File tree

7 files changed

+184
-17
lines changed

7 files changed

+184
-17
lines changed

SUMMARY.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,15 @@
108108
* [0104.Maximum-Depth-of-Binary-Tree](./src/0104.Maximum-Depth-of-Binary-Tree/README.md)
109109
* [0107.Binary-Tree-Level-Order-Traversal-II](./src/0107.Binary-Tree-Level-Order-Traversal-II/README.md)
110110
* [0120.Triangle](./src/0120.Triangle/README.md)
111+
* [0121.Best-Time-to-Buy-and-Sell-Stock](./src/0121.Best-Time-to-Buy-and-Sell-Stock/README.md)
112+
* [0122.Best-Time-to-Buy-and-Sell-Stock-II](./src/0122.Best-Time-to-Buy-and-Sell-Stock-II/README.md)
113+
* [0123.Best-Time-to-Buy-and-Sell-Stock-III](./src/0123.Best-Time-to-Buy-and-Sell-Stock-III/README.md)
111114
* [0141.Linked-List-Cycle](./src/0141.Linked-List-Cycle/README.md)
112115
* [0142.Linked-List-Cycle-II](./src/0142.Linked-List-Cycle-II/README.md)
113116
* [0144.Binary-Tree-Preorder-Traversal](./src/0144.Binary-Tree-Preorder-Traversal/README.md)
114117
* [0145.Binary-Tree-Postorder-Traversal](./src/0145.Binary-Tree-Postorder-Traversal/README.md)
115118
* [0169.Majority-Element](./src/0169.Majority-Element/README.md)
119+
* [0188.Best-Time-to-Buy-and-Sell-Stock-IV](./src/0188.Best-Time-to-Buy-and-Sell-Stock-IV/README.md)
116120
* [0198.House-Robber](./src/0198.House-Robber/README.md)
117121
* [0206.Reverse-Linked-List](./src/0206.Reverse-Linked-List/README.md)
118122
* [0216.Combination-Sum-III](./src/0216.Combination-Sum-III/README.md)
@@ -122,7 +126,10 @@
122126
* [0236.Lowest-Common-Ancestor-of-a-Binary-Tree](./src/0236.Lowest-Common-Ancestor-of-a-Binary-Tree/README.md)
123127
* [0242.Valid-Anagram](./src/0242.Valid-Anagram/README.md)
124128
* [0300.Longest-Increasing-Subsequence](./src/0300.Longest-Increasing-Subsequence/README.md)
129+
* [0376.Wiggle-Subsequence](./src/0376.Wiggle-Subsequence/README.md)
125130
* [0377.Combination-Sum-IV](./src/0377.Combination-Sum-IV/README.md)
131+
* [0412.Fizz-Buzz](./src/0412.Fizz-Buzz/README.md)
132+
* [0455.Assign-Cookies](./src/0455.Assign-Cookies/README.md)
126133
* [0554.Brick-Wall](./src/0554.Brick-Wall/README.md)
127134
* [0703.Kth-Largest-Element-in-a-Stream](./src/0703.Kth-Largest-Element-in-a-Stream/README.md)
128135
* [0980.Unique-Paths-III](./src/0980.Unique-Paths-III/README.md)
585 KB
Loading

cmd/github/contribution_test.go

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
package github
22

33
import (
4-
"encoding/json"
5-
"fmt"
64
"testing"
75
)
86

97
func TestGetContributorString(t *testing.T) {
10-
con_buffer := getContributorBufer()
11-
contributors := []Contributor{}
12-
err := json.Unmarshal(con_buffer, &contributors)
13-
if err != nil {
14-
fmt.Println(err.Error())
15-
}
16-
byt, _ := json.MarshalIndent(contributors, " ", " ")
17-
fmt.Println(string(byt))
18-
8+
//con_buffer := getContributorBufer()
9+
//contributors := []Contributor{}
10+
//err := json.Unmarshal(con_buffer, &contributors)
11+
//if err != nil {
12+
// fmt.Println(err.Error())
13+
//}
14+
//byt, _ := json.MarshalIndent(contributors, " ", " ")
15+
//fmt.Println(string(byt))
1916
}

cmd/main.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package main
22

3-
import (
4-
"github.com/kylesliu/awesome-golang-leetcode/cmd/leetcode"
5-
)
6-
73
func main() {
8-
problems := leetcode.GetSotedproblemsInstance()
4+
//problems := leetcode.GetSotedproblemsInstance()
95
//problems := leetcode.GetProblemsJosn()
106

117
//for _, v := range problems {
@@ -20,6 +16,6 @@ func main() {
2016
//leetcode.GetReadmeTemplateBuffer()
2117

2218
// GitBook
23-
leetcode.MakeGitbookSummary(problems)
19+
//leetcode.MakeGitbookSummary(problems)
2420

2521
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# [376. Wiggle Subsequence][title]
2+
3+
## Description
4+
5+
A sequence of numbers is called a wiggle sequence if the differences between successive numbers strictly alternate between positive and negative. The first difference (if one exists) may be either positive or negative. A sequence with fewer than two elements is trivially a wiggle sequence.
6+
7+
For example, [1,7,4,9,2,5] is a wiggle sequence because the differences (6,-3,5,-7,3) are alternately positive and negative. In contrast, [1,4,7,2,5] and [1,7,4,5,5] are not wiggle sequences, the first because its first two differences are positive and the second because its last difference is zero.
8+
9+
Given a sequence of integers, return the length of the longest subsequence that is a wiggle sequence. A subsequence is obtained by deleting some number of elements (eventually, also zero) from the original sequence, leaving the remaining elements in their original order.
10+
11+
**Example 1:**
12+
13+
```
14+
Input: [1,7,4,9,2,5]
15+
Output: 6
16+
Explanation: The entire sequence is a wiggle sequence.
17+
```
18+
19+
**Example 2:**
20+
21+
```
22+
Input: [1,17,5,10,13,15,10,5,16,8]
23+
Output: 7
24+
Explanation: There are several subsequences that achieve this length. One is [1,17,10,13,10,16,8].
25+
```
26+
27+
**Example 3:**
28+
29+
```
30+
Input: [1,2,3,4,5,6,7,8,9]
31+
Output: 2
32+
```
33+
34+
**Tags:** Math, String
35+
36+
## 题意
37+
>求摇摆序列最长序列,可以转化为数组【上升】【下降】状态的转换
38+
39+
40+
## 题解
41+
42+
### 思路1
43+
> 分别定义上升下降2个状态,分别做判断
44+
45+
![376_Wiggle_Subsequence](../../assets/images/376_Wiggle_Subsequence.jpg)
46+
47+
```go
48+
func wiggleMaxLength(nums []int) int {
49+
// 序列个数小于二直接是摇摆序列
50+
if len(nums) < 2 {
51+
return len(nums)
52+
}
53+
// 3种状态
54+
const BEGIN, UP, DOWN = 0, 1, 2
55+
// 摇摆序列最小长度至少为1
56+
STATE, maxLength := BEGIN, 1
57+
58+
for i := 1; i < len(nums); i++ {
59+
switch STATE {
60+
case BEGIN:
61+
if nums[i-1] < nums[i] {
62+
STATE = UP
63+
maxLength++
64+
} else if nums[i-1] > nums[i] {
65+
STATE = DOWN
66+
maxLength++
67+
}
68+
case UP:
69+
if nums[i-1] > nums[i] {
70+
STATE = DOWN
71+
maxLength++
72+
}
73+
case DOWN:
74+
if nums[i-1] < nums[i] {
75+
STATE = UP
76+
maxLength++
77+
}
78+
}
79+
}
80+
return maxLength
81+
}
82+
83+
```
84+
85+
## 结语
86+
87+
如果你同我一样热爱数据结构、算法、LeetCode,可以关注我 GitHub 上的 LeetCode 题解:[awesome-golang-leetcode][me]
88+
89+
[title]: https://leetcode.com/problems/wiggle-subsequence/
90+
[me]: https://github.com/kylesliu/awesome-golang-leetcode
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package Solution
2+
3+
func wiggleMaxLength(nums []int) int {
4+
// 序列个数小于二直接是摇摆序列
5+
if len(nums) < 2 {
6+
return len(nums)
7+
}
8+
// 3种状态
9+
const BEGIN, UP, DOWN = 0, 1, 2
10+
// 摇摆序列最小长度至少为1
11+
STATE, maxLength := BEGIN, 1
12+
13+
for i := 1; i < len(nums); i++ {
14+
switch STATE {
15+
case BEGIN:
16+
if nums[i-1] < nums[i] {
17+
STATE = UP
18+
maxLength++
19+
} else if nums[i-1] > nums[i] {
20+
STATE = DOWN
21+
maxLength++
22+
}
23+
case UP:
24+
if nums[i-1] > nums[i] {
25+
STATE = DOWN
26+
maxLength++
27+
}
28+
case DOWN:
29+
if nums[i-1] < nums[i] {
30+
STATE = UP
31+
maxLength++
32+
}
33+
}
34+
}
35+
return maxLength
36+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package Solution
2+
3+
import (
4+
"reflect"
5+
"strconv"
6+
"testing"
7+
)
8+
9+
func TestSolution(t *testing.T) {
10+
// 测试用例
11+
cases := []struct {
12+
name string
13+
inputs []int
14+
expect int
15+
}{
16+
{"TestCase", []int{1, 7, 4, 9, 2, 5}, 6},
17+
{"TestCase", []int{1, 17, 5, 10, 13, 15, 10, 5, 16, 8}, 7},
18+
{"TestCase", []int{1, 2, 3, 4, 5, 6, 7, 8, 9}, 2},
19+
}
20+
21+
// 开始测试
22+
for i, c := range cases {
23+
t.Run(c.name+strconv.Itoa(i), func(t *testing.T) {
24+
got := wiggleMaxLength(c.inputs)
25+
if !reflect.DeepEqual(got, c.expect) {
26+
t.Fatalf("expected: %v, but got: %v, with inputs: %v",
27+
c.expect, got, c.inputs)
28+
}
29+
})
30+
}
31+
}
32+
33+
// 压力测试
34+
func BenchmarkSolution(b *testing.B) {
35+
36+
}
37+
38+
// 使用案列
39+
func ExampleSolution() {
40+
41+
}

0 commit comments

Comments
 (0)