diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271/README.md" index 49ef8f9eca0ac..da93be60ea51d 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271/README.md" @@ -238,6 +238,41 @@ def remove_nth_from_end(head, n) end ``` +#### Swift + +```swift +/* class ListNode { +* var val: Int +* var next: ListNode? +* init() { self.val = 0; self.next = nil } +* init(_ val: Int) { self.val = val; self.next = nil } +* init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next } +* } +*/ + +class Solution { + func removeNthFromEnd(_ head: ListNode?, _ n: Int) -> ListNode? { + let dummy = ListNode(0, head) + var fast: ListNode? = dummy + var slow: ListNode? = dummy + + var n = n + while n > 0 { + fast = fast?.next + n -= 1 + } + + while fast?.next != nil { + slow = slow?.next + fast = fast?.next + } + + slow?.next = slow?.next?.next + return dummy.next + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271/Solution.swift" new file mode 100644 index 0000000000000..a35f343f62f64 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271/Solution.swift" @@ -0,0 +1,30 @@ +/* class ListNode { +* var val: Int +* var next: ListNode? +* init() { self.val = 0; self.next = nil } +* init(_ val: Int) { self.val = val; self.next = nil } +* init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next } +* } +*/ + +class Solution { + func removeNthFromEnd(_ head: ListNode?, _ n: Int) -> ListNode? { + let dummy = ListNode(0, head) + var fast: ListNode? = dummy + var slow: ListNode? = dummy + + var n = n + while n > 0 { + fast = fast?.next + n -= 1 + } + + while fast?.next != nil { + slow = slow?.next + fast = fast?.next + } + + slow?.next = slow?.next?.next + return dummy.next + } +} \ No newline at end of file