1 题目描述
2 算法思路
思路:
两个指针,第一个指针先走 k 步,然后两个指针同时同速走,当第一个指针走到末尾,第二个指针就是要求。
算法:
- 初始化两个指针,左指针left ,右指针right
- 让右指针先走k步,然后左右指针同时进行
- 当右指针走到末尾,左指针就是所求。
3 代码
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
ListNode left = head;
ListNode right = head;
for(int i = 0; i < k; i++){ //让右指针往前走k步
right = right.next;
}
while(right != null){ //让左右保持同样的距离和速度前进,直到右指针到头
right = right.next;
left = left.next;
}
return left;
}
}