Skip to content

Commit 455c09c

Browse files
Merge pull request #14 from glve1027/master
031 作业提交
2 parents 866af0c + 0f7a81a commit 455c09c

File tree

5 files changed

+241
-0
lines changed

5 files changed

+241
-0
lines changed

Week_01/id_31/LeetCode_21_031.swift

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
//
2+
// LeetCode_21_031.swift
3+
// TestCoding
4+
//
5+
// Created by 龚欢 on 2019/4/15.
6+
// Copyright © 2019 龚欢. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
// 时间复杂度O(n) ; n为maxCount(l1.count, l2.count)
12+
class Solution {
13+
func mergeTwoLists(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
14+
var result: [Int] = []
15+
16+
let a1 = converToArryFrom(l1)
17+
let a2 = converToArryFrom(l2)
18+
19+
var i = 0
20+
var j = 0
21+
22+
while true {
23+
if (i >= a1.count || j >= a2.count) {
24+
if (j <= a2.count - 1) { result = result + a2[j...a2.count - 1] }
25+
if (i <= a1.count - 1) { result = result + a1[i...a1.count - 1] }
26+
break;
27+
}
28+
29+
if (a1[i] == a2[j]) {
30+
result.append(a1[i])
31+
result.append(a2[j])
32+
i += 1
33+
j += 1
34+
} else if ((a1[i] < a2[j])) {
35+
result.append(a1[i])
36+
i += 1
37+
} else {
38+
result.append(a2[j])
39+
j += 1
40+
}
41+
}
42+
return convertToNodeFrom(result)
43+
}
44+
45+
private func converToArryFrom(_ node: ListNode?) -> [Int] {
46+
var resultArr: [Int] = []
47+
guard let _ = node else { return resultArr }
48+
var currentNode = node
49+
while let current = currentNode {
50+
resultArr.append(current.val)
51+
currentNode = currentNode?.next
52+
}
53+
return resultArr
54+
}
55+
56+
private func convertToNodeFrom(_ arr: [Int]) -> ListNode? {
57+
guard arr.count > 0 else { return nil }
58+
var result: ListNode?
59+
var resultHeader: ListNode?
60+
for v in arr {
61+
if result == nil {
62+
result = ListNode(v)
63+
resultHeader = result
64+
} else {
65+
result?.next = ListNode(v)
66+
result = result?.next
67+
}
68+
}
69+
return resultHeader
70+
}
71+
}

Week_01/id_31/LeetCode_24_031.swift

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//
2+
// LeetCode_24_031.swift
3+
// TestCoding
4+
//
5+
// Created by 龚欢 on 2019/4/15.
6+
// Copyright © 2019 龚欢. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
// 时间复杂度O(n)
12+
class Solution {
13+
var stack: [Int] = []
14+
func swapPairs(_ head: ListNode?) -> ListNode? {
15+
guard let h = head else { return nil }
16+
17+
var currentNode: ListNode? = head
18+
var dump: ListNode? = ListNode(h.val)
19+
let resultHeader: ListNode? = dump
20+
21+
while let current = currentNode {
22+
if (stack.count == 0) {
23+
stack.append(current.val)
24+
} else {
25+
let willPopNodeValue = stack.removeFirst()
26+
dump?.next = ListNode(current.val)
27+
dump = dump?.next
28+
dump?.next = ListNode(willPopNodeValue)
29+
dump = dump?.next
30+
}
31+
currentNode = currentNode?.next
32+
}
33+
if (stack.count > 0) { dump?.next = ListNode(stack[0])}
34+
35+
return resultHeader?.next
36+
}
37+
}

Week_01/id_31/LeetCode_83_031.swift

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
//
2+
// LeetCode_83_031.swift
3+
// TestCoding
4+
//
5+
// Created by 龚欢 on 2019/4/15.
6+
// Copyright © 2019 龚欢. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
// 解法1:时间复杂度O(n), 空间复杂度O(Node中不同的value的结点个数)
12+
class Solution {
13+
var temp: [Int] = []
14+
func deleteDuplicates(_ head: ListNode?) -> ListNode? {
15+
guard let _ = head else { return nil }
16+
var currentNode: ListNode? = head
17+
var preNode: ListNode? = nil
18+
var result: ListNode?
19+
var resultHeader: ListNode?
20+
while let current = currentNode {
21+
if (temp.contains(current.val)) {
22+
preNode?.next = currentNode?.next
23+
} else {
24+
if (result == nil) {
25+
result = ListNode(current.val)
26+
resultHeader = result
27+
} else {
28+
result?.next = ListNode(current.val)
29+
result = result?.next
30+
}
31+
temp.append(current.val)
32+
}
33+
preNode = currentNode
34+
currentNode = currentNode?.next
35+
}
36+
return resultHeader
37+
}
38+
}
39+
40+
// 解法2:时间复杂度O(2n), 空间复杂度O(Node中不同的value的结点个数)
41+
class Solution {
42+
var temp: [Int] = []
43+
func deleteDuplicates(_ head: ListNode?) -> ListNode? {
44+
guard let _ = head else { return nil }
45+
var currentNode: ListNode? = head
46+
while let current = currentNode {
47+
if (!temp.contains(current.val)) { temp.append(current.val) }
48+
currentNode = currentNode?.next
49+
}
50+
return convertToNodeFrom(temp)
51+
}
52+
53+
private func convertToNodeFrom(_ arr: [Int]) -> ListNode? {
54+
guard arr.count > 0 else { return nil }
55+
var result: ListNode?
56+
var resultHeader: ListNode?
57+
for v in temp {
58+
if result == nil {
59+
result = ListNode(v)
60+
resultHeader = result
61+
} else {
62+
result?.next = ListNode(v)
63+
result = result?.next
64+
}
65+
}
66+
return resultHeader
67+
}
68+
}

Week_01/id_31/LeetCode_905_031.swift

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//
2+
// LeetCode_905_031.swift
3+
// TestCoding
4+
//
5+
// Created by 龚欢 on 2019/4/15.
6+
// Copyright © 2019 龚欢. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
// 时间复杂度 O(n)
12+
// 方法 1
13+
class Solution {
14+
func sortArrayByParity(_ A: [Int]) -> [Int] {
15+
guard A.count > 0 else { return [] }
16+
var tempA = A
17+
var i = 0
18+
var j = tempA.count - 1
19+
while i <= j {
20+
if (tempA[i] % 2 == 0) {
21+
i += 1
22+
} else {
23+
if (tempA[j] % 2 == 0) {
24+
tempA.swapAt(i, j)
25+
j -= 1
26+
i += 1
27+
} else {
28+
j -= 1
29+
}
30+
}
31+
}
32+
return tempA
33+
}
34+
}
35+
36+
// 方法 2
37+
class Solution {
38+
func sortArrayByParity(_ A: [Int]) -> [Int] {
39+
return A.filter { $0 % 2 == 0 } + A.filter { $0 % 2 != 0 }
40+
}
41+
}

Week_01/id_31/LeetCode_922_031.swift

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//
2+
// LeetCode_922_031.swift
3+
// TestCoding
4+
//
5+
// Created by 龚欢 on 2019/4/15.
6+
// Copyright © 2019 龚欢. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
// 时间复杂度: O(n/2) 空间复杂度:O(n)
12+
class Solution {
13+
func sortArrayByParityII(_ A: [Int]) -> [Int] {
14+
guard A.count > 0 else { return [] }
15+
var result: [Int] = []
16+
let even = A.filter { $0 % 2 == 0 }
17+
let odd = A.filter { $0 % 2 != 0 }
18+
for i in 0..<even.count {
19+
result.append(even[i])
20+
result.append(odd[i])
21+
}
22+
return result
23+
}
24+
}

0 commit comments

Comments
 (0)