Skip to content

Commit a2c7603

Browse files
authored
206 solved. (#53)
1 parent ad25196 commit a2c7603

File tree

5 files changed

+86
-0
lines changed

5 files changed

+86
-0
lines changed

Makefile

+5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ GOBUILD=$(GOCMD) build
44
GOCLEAN=$(GOCMD) clean
55
GOTEST=$(GOCMD) test
66
GOGET=$(GOCMD) get
7+
GOFMT=$(GOCMD) fmt
78

89
test:
910
@echo "unit test"
@@ -12,3 +13,7 @@ test:
1213
clean:
1314
@echo "clean test cache"
1415
$(GOCLEAN) -testcache
16+
17+
fmt:
18+
@echo "fmt code"
19+
$(GOFMT) ./...

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ continually updating 😃.
6666
* [86. Partition List](src/0086_partition_list/partition_list.go)   *`two pointers`*
6767
* [92. Reverse Linked List II](src/0092_reverse_linked_list_2/reverse_linked_list2.go)
6868
* [203. Remove Linked List Elements](src/0203_remove_linked_list_elements/remove_linked_list_elements.go)
69+
* [206. Reverse Linked List](src/0206_reverse_linked_list/reverse_linked_list.go)
6970

7071
### Dynamic Programming
7172
* [62. Unique Paths](./src/0062_unique_paths/unique_paths.go)   *`array`*
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
206. Reverse Linked List
3+
https://leetcode.com/problems/reverse-linked-list/
4+
5+
Reverse a singly linked list.
6+
*/
7+
// time: 2019-01-07
8+
9+
package rll
10+
11+
// ListNode Definition for singly-linked list.
12+
type ListNode struct {
13+
Val int
14+
Next *ListNode
15+
}
16+
17+
// recursive
18+
// time complexity: O(n)
19+
// space complexity: O(n)
20+
func reverseList(head *ListNode) *ListNode {
21+
if head == nil || head.Next == nil {
22+
return head
23+
}
24+
25+
tail := reverseList(head.Next)
26+
head.Next.Next = head
27+
head.Next = nil
28+
return tail
29+
}
30+
31+
// iterative
32+
// time complexity: O(n)
33+
// space complexity: O(1)
34+
func reverseList1(head *ListNode) *ListNode {
35+
var (
36+
pre *ListNode
37+
cur = head
38+
)
39+
for cur != nil {
40+
next := cur.Next
41+
cur.Next = pre
42+
pre = cur
43+
cur = next
44+
}
45+
return pre
46+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package rll
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
)
7+
8+
func TestReverseList(t *testing.T) {
9+
head := createSinglyLinkedList([]int{1, 2, 3, 4, 5})
10+
expected := createSinglyLinkedList([]int{5, 4, 3, 2, 1})
11+
if res := reverseList(head); !reflect.DeepEqual(res, expected) {
12+
t.Errorf("expected %v, got %v", expected, res)
13+
}
14+
}
15+
16+
func TestReverseList1(t *testing.T) {
17+
head := createSinglyLinkedList([]int{1, 2, 3, 4, 5})
18+
expected := createSinglyLinkedList([]int{5, 4, 3, 2, 1})
19+
if res := reverseList1(head); !reflect.DeepEqual(res, expected) {
20+
t.Errorf("expected %v, got %v", expected, res)
21+
}
22+
}
23+
24+
func createSinglyLinkedList(nums []int) *ListNode {
25+
head := &ListNode{}
26+
cur := head
27+
28+
for _, num := range nums {
29+
cur.Next = &ListNode{Val: num}
30+
cur = cur.Next
31+
}
32+
return head.Next
33+
}

src/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
|0198|[House Robber](./0198_house_robber/house_robber.go)|Easy|*`memory search;`* *`dynamic programming`*|
6666
|0200|[200. Number of Islands](0200_number_of_island/number_of_island.go)|Medium|*`dfs;`* *`bfs`*|
6767
|0203|[203. Remove Linked List Elements](0203_remove_linked_list_elements/remove_linked_list_elements.go)|Easy|*`linked list`*|
68+
|0206|[206. Reverse Linked List](0206_reverse_linked_list/reverse_linked_list.go)|Easy|*`linked list`*|
6869
|0209|[Minimum Size Subarray Sum](./0209_minimum_size_subarray_sum/minimum_size_subarray_sum.go)|Medium|*`sliding window`*|
6970
|0215|[215. Kth Largest Element in an Array](0215_kth_largest_element_in_an_array/kthleiaa.go)|Medium|*`sort`*|
7071
|0226|[Invert Binary Tree](./0226_invert_binary_tree/invert_binary_tree.go)|Easy|*`recursion; `* *`binary tree`*|

0 commit comments

Comments
 (0)