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 beb4b47

Browse files
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‎

Lines changed: 45 additions & 0 deletions
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 -->
Lines changed: 40 additions & 0 deletions
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)

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