Skip to content

Commit beb4b47

Browse files
authored
feat: add swift implementation to lcof2 problem: No.029 (#3028)
1 parent 6a2134e commit beb4b47

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

lcof2/剑指 Offer II 029. 排序的循环链表/README.md

+45
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,51 @@ function insert(head: Node | null, insertVal: number): Node | null {
274274
}
275275
```
276276

277+
#### Swift
278+
279+
```swift
280+
/* class Node {
281+
* var val: Int
282+
* var next: Node?
283+
284+
* init(_ val: Int) {
285+
* self.val = val
286+
* self.next = nil
287+
* }
288+
* }
289+
*/
290+
291+
class Solution {
292+
func insert(_ head: Node?, _ insertVal: Int) -> Node? {
293+
let newNode = Node(insertVal)
294+
if head == nil {
295+
newNode.next = newNode
296+
return newNode
297+
}
298+
299+
var current = head
300+
repeat {
301+
if current!.val <= insertVal && insertVal <= current!.next!.val {
302+
break
303+
}
304+
305+
if current!.val > current!.next!.val && (insertVal >= current!.val || insertVal <= current!.next!.val) {
306+
break
307+
}
308+
309+
if current!.next === head {
310+
break
311+
}
312+
current = current!.next
313+
} while current !== head
314+
315+
newNode.next = current!.next
316+
current!.next = newNode
317+
return head
318+
}
319+
}
320+
```
321+
277322
<!-- tabs:end -->
278323

279324
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/* class Node {
2+
* var val: Int
3+
* var next: Node?
4+
5+
* init(_ val: Int) {
6+
* self.val = val
7+
* self.next = nil
8+
* }
9+
* }
10+
*/
11+
12+
class Solution {
13+
func insert(_ head: Node?, _ insertVal: Int) -> Node? {
14+
let newNode = Node(insertVal)
15+
if head == nil {
16+
newNode.next = newNode
17+
return newNode
18+
}
19+
20+
var current = head
21+
repeat {
22+
if current!.val <= insertVal && insertVal <= current!.next!.val {
23+
break
24+
}
25+
26+
if current!.val > current!.next!.val && (insertVal >= current!.val || insertVal <= current!.next!.val) {
27+
break
28+
}
29+
30+
if current!.next === head {
31+
break
32+
}
33+
current = current!.next
34+
} while current !== head
35+
36+
newNode.next = current!.next
37+
current!.next = newNode
38+
return head
39+
}
40+
}

0 commit comments

Comments
 (0)