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 b4316f4

Browse files
authored
148 solved. (#79)
1 parent b7823ef commit b4316f4

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-0
lines changed

‎README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ continually updating 😃.
7676
* [83. Remove Duplicates from Sorted List](src/0083_remove_duplicates_from_sorted_list/rdfsl.go)
7777
* [86. Partition List](src/0086_partition_list/partition_list.go)   *`two pointers`*
7878
* [92. Reverse Linked List II](src/0092_reverse_linked_list_2/reverse_linked_list2.go)
79+
* [148. Sort List](src/148_Sort_List/sortlist.go)   *`sort`*
7980
* [203. Remove Linked List Elements](src/0203_remove_linked_list_elements/remove_linked_list_elements.go)
8081
* [206. Reverse Linked List](src/0206_reverse_linked_list/reverse_linked_list.go)
8182
* [237. Delete Node in a Linked List](src/0237_delete_node_in_a_linked_list/dniall.go)

‎src/148_Sort_List/sortlist.go‎

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
148. Sort List
3+
https://leetcode.com/problems/sort-list/
4+
*/
5+
// time: 2019年03月04日
6+
7+
package sortlist
8+
9+
// ListNode Definition for singly-linked list.
10+
type ListNode struct {
11+
Val int
12+
Next *ListNode
13+
}
14+
15+
// merge sort
16+
// time complexity: O(n * log(n))
17+
// using recursion, the system stack is used.
18+
func sortList(head *ListNode) *ListNode {
19+
if head == nil || head.Next == nil {
20+
return head
21+
}
22+
23+
prev, slow, fast := head, head, head
24+
for fast != nil && fast.Next != nil {
25+
prev = slow
26+
slow = slow.Next
27+
fast = fast.Next.Next
28+
}
29+
prev.Next = nil
30+
return merge(sortList(head), sortList(slow))
31+
}
32+
33+
func merge(headA, headB *ListNode) *ListNode {
34+
dummy := &ListNode{}
35+
tail := dummy
36+
37+
for headA != nil && headB != nil {
38+
if headA.Val > headB.Val {
39+
tail.Next = headB
40+
headB = headB.Next
41+
} else {
42+
tail.Next = headA
43+
headA = headA.Next
44+
}
45+
tail = tail.Next
46+
}
47+
if headA != nil {
48+
tail.Next = headA
49+
} else {
50+
tail.Next = headB
51+
}
52+
return dummy.Next
53+
}

‎src/148_Sort_List/sortlist_test.go‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package sortlist
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
)
7+
8+
func TestSortList(t *testing.T) {
9+
head := createSingleLinkedList([]int{-1, 5, 3, 4, 0})
10+
expected := createSingleLinkedList([]int{-1, 0, 3, 4, 5})
11+
if res := sortList(head); !reflect.DeepEqual(res, expected) {
12+
t.Errorf("expected %v, got %v", expected, res)
13+
}
14+
}
15+
16+
func createSingleLinkedList(nums []int) *ListNode {
17+
dummy := ListNode{}
18+
cur := &dummy
19+
for _, val := range nums {
20+
cur.Next = &ListNode{Val: val}
21+
cur = cur.Next
22+
}
23+
return dummy.Next
24+
}

‎src/README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
|0125|[Valid Palindrome](0125_valid_palindrome/valid_palindrome.go)|Easy||
6161
|0136|[136. Single Number](0136_single_number/single_number.go)|Easy|*`hash table;`* *`bit manipulation`*|
6262
|0144|[144. Binary Tree Preorder Traversal](0144_binary_tree_preorder_traversal/binary_tree_preorder_traversal.go)|Medium|*`binary tree`*|
63+
|0148|[148. Sort List](148_Sort_List/sortlist.go)|Medium|*`sort;`* *`linked list`*|
6364
|0150|[150. Evaluate Reverse Polish Notation](0150_evaluate_reverse_polish_notation/evaluate_reverse_polish_notation.go)|Medium|*`stack`*|
6465
|0153|[153. Find Minimum in Rotated Sorted Array](0153_find_minimum_in_rotated_sorted_array/fmirsa.go)|Medium|*`binary search`*|
6566
|0155|[155. Min Stack](0155_min_stack/min_stack.go)|Easy|*`stack`*|

0 commit comments

Comments
(0)

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