LeetCode面试题 02.02. 返回倒数第 k 个节点(C++,双指针)

1 问题

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

注意:本题相对原题稍作改动

示例:

输入: 1->2->3->4->5 和 k = 2
输出: 4

说明:

给定的 k 保证是有效的。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

双指针,第一个指正走k步;然后两个指针一起往前走。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    int kthToLast(ListNode* head, int k) {
        ListNode* point1 = head;
        ListNode* point2 = head;
        int i = 0;
        while(i < k){
            point1 = point1->next;
            i += 1;
        }
        while(point1 != NULL){
            point2 = point2->next;
            point1 = point1->next;
        }
        return point2->val;

    }
};
发布了510 篇原创文章 · 获赞 152 · 访问量 77万+

猜你喜欢

转载自blog.csdn.net/rosefun96/article/details/105473164