diff --git a/leetcode/0019.Remove-Nth-Node-From-End-of-List/19. Remove Nth Node From End of List.go b/leetcode/0019.Remove-Nth-Node-From-End-of-List/19. Remove Nth Node From End of List.go index a4d4d18f..c4a1aa52 100644 --- a/leetcode/0019.Remove-Nth-Node-From-End-of-List/19. Remove Nth Node From End of List.go +++ b/leetcode/0019.Remove-Nth-Node-From-End-of-List/19. Remove Nth Node From End of List.go @@ -20,8 +20,14 @@ func removeNthFromEnd(head *ListNode, n int) *ListNode { var fast, slow *ListNode fast = head slow = head + step := 0 for i := 0; i < n; i++ { + // n maybe much larger than length of linklist + if fast.Next == nil && step != 0 && step < n-1 { + return head + } fast = fast.Next + step++ } if fast == nil { head = head.Next diff --git a/leetcode/0019.Remove-Nth-Node-From-End-of-List/19. Remove Nth Node From End of List_test.go b/leetcode/0019.Remove-Nth-Node-From-End-of-List/19. Remove Nth Node From End of List_test.go index e7be4810..0447a0b9 100644 --- a/leetcode/0019.Remove-Nth-Node-From-End-of-List/19. Remove Nth Node From End of List_test.go +++ b/leetcode/0019.Remove-Nth-Node-From-End-of-List/19. Remove Nth Node From End of List_test.go @@ -29,6 +29,21 @@ func Test_Problem19(t *testing.T) { qs := []question19{ + { + para19{[]int{1, 2}, 2}, + ans19{[]int{2}}, + }, + + { + para19{[]int{1}, 1}, + ans19{[]int{}}, + }, + + { + para19{[]int{1, 2, 3, 4, 5}, 10}, + ans19{[]int{1, 2, 3, 4, 5}}, + }, + { para19{[]int{1, 2, 3, 4, 5}, 1}, ans19{[]int{1, 2, 3, 4}}, diff --git a/website/content/ChapterFour/0001~0099/0019.Remove-Nth-Node-From-End-of-List.md b/website/content/ChapterFour/0001~0099/0019.Remove-Nth-Node-From-End-of-List.md index 0df460da..d4e38560 100644 --- a/website/content/ChapterFour/0001~0099/0019.Remove-Nth-Node-From-End-of-List.md +++ b/website/content/ChapterFour/0001~0099/0019.Remove-Nth-Node-From-End-of-List.md @@ -43,8 +43,14 @@ func removeNthFromEnd(head *ListNode, n int) *ListNode { var fast, slow *ListNode fast = head slow = head + step := 0 for i := 0; i < n; i++ { + // n maybe much larger than length of linklist + if fast.Next == nil && step != 0 && step < n-1 { + return head + } fast = fast.Next + step++ } if fast == nil { head = head.Next