给定一个头节点为 head
的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt
个训练项目编号。
示例 1:
输入:head = [2,4,7,8], cnt = 1 输出:8
提示:
1 <= head.length <= 100
0 <= head[i] <= 100
1 <= cnt <= head.length
思路:双指针,起初,p=head,然后要返回倒数第几个,就让p先提前走几个,随后head和p同时走,直到p为空,则返回当前head指针,即为我们所要的值。
head=p; cnt=1,p先走一个(与cnt有关),走到2,此时,p和head同时走,直到p走到空,此时head走到8的位置,返回指针head。
代码:
struct ListNode* trainingPlan(struct ListNode* head, int cnt) {
struct ListNode*p;
p=head;
int i;
for(i=1;i<=cnt;i++){
p=p->next;
}
while(p!=NULL){
p=p->next;
head=head->next;
}
return head;
}
时间复杂度:o(n)
空间复杂度:o(1)