力扣算法题—LCR 140.训练计划 II

题目:

给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。

示例 1:

输入:head = [2,4,7,8], cnt = 1
输出:8
提示:

1 <= head.length <= 100
0 <= head[i] <= 100
1 <= cnt <= head.length


解题思路:

构建两个指针,中间间隔cnt,第一个指针node1指向链表第一个元素,第二个指针node2与第一个指针node1间隔cnt指向链表中的元素。令两个指同时向后走,当第二个指针node2走完链表的所有元素后,第一个指针node1恰好走到需要返回的倒数第cnt个项目编号。


代码展示

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* trainingPlan(struct ListNode* head, int cnt) {
    struct ListNode *node1 = head;
    struct ListNode *node2 = head;
    for(int i = 0;inext;
    }
    while(node2)
    {
        node1 = node1->next;
        node2 = node2->next;
    }
    return node1;
}
时间复杂度:O(1)

你可能感兴趣的:(算法,leetcode)