题目来源:
leetcode题目,网址:LCR 140. 训练计划 II - 力扣(LeetCode)
解题思路:
初始时,res 指针指向头节点,end 指针指向头节点后第 cnt 个节点。将两指针同时往后移动,在 end 指针指向空节点时,res指针指向节点即为所求。
解题代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode trainingPlan(ListNode head, int cnt) {
ListNode res=head;
ListNode end=head;
for(int i=0;i<cnt;i++){
end=end.next;
}
while(end!=null){
res=res.next;
end=end.next;
}
return res;
}
}
总结:
官方题解给出了两种解法。第一种是顺序查找。第一次遍历得到链表长度 n ,第二遍找出目标节点即正序第 n-cnt+1 个节点。第二种解法是双指针。