链表中倒数第k个节点 双指针】的更多相关文章

链表中倒数第k个节点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路:two-pointers思想,因为是单链表,没法得prevous点,直接遍历得到链表长度再重新遍历效率很低. 采用双指针思想,使得当一个指针处于链表末尾时,另一个指针恰好在倒数第k个节点. public ListNode FindKthToTail(ListNode head, int k) { if(head==null||k==0) return null; ListNode tmp = head; ListN…
/* 题目: 链表中倒数第k个节点 */ /* 思路: 考虑边界条件:链表为空,k值超过链表长度. 双指针: q指针指向第k个节点,p指针指向第1个节点. q指针指向最后一个节点,p指针指向倒数第k个节点. */ #include<iostream> #include<string.h> #include<algorithm> #include<cmath> #include<stdio.h> using namespace std; struc…
要求:输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6.这个链表的倒数第3个节点是值为4的节点. 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 思路:定义快慢双指针,先让快指针先走k步,然后双指针一起移动,完成只需要遍历一遍 struct ListNode* getKthFromEnd(…
题目来源: 剑指 Offer 22. 链表中倒数第k个节点 leetCode 题目描述: 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6.这个链表的倒数第3个节点是值为4的节点. 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 来源:力扣(LeetCode) 链接:https://lee…
剑指 Offer 22. 链表中倒数第k个节点 Offer 22 常规解法 常规解法其实很容易可以想到,只需要先求出链表的长度,然后再次遍历取指定长度的链接即可. package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/1/26 20:10 */ /** * 题目分析: * 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. * 例如,一个链表有6…
剑指 Offer 22. 链表中倒数第k个节点 知识点:链表:双指针 题目描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6.这个链表的倒数第 3 个节点是值为 4 的节点. . 示例 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 解法一:解析 这题和leetcode 61 旋转链表…
题目 剑指 Offer 22. 链表中倒数第k个节点 思路1(栈) 既然要倒数第k个节点,那我们直接把所有节点放到栈(先进后出)里面,然后pop弹出k个元素就可以了 代码 class Solution { public ListNode getKthFromEnd(ListNode head, int k) { LinkedList<ListNode> stack = new LinkedList<>(); // 把整个链表入栈 while (head != null) { sta…
剑指 Offer 22. 链表中倒数第k个节点 题意 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. ​ 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1.2.3.4.5.6,则这个链表的倒数第 3 个节点是值为 4 的节点. ​ 链表节点的定义如下: struct ListNode { int val; ListNode* next; ListNode(int x) : val(x), next(NULL) {…
题目:输入一个链表,输出这个链表中倒数第K个节点.(代码的鲁棒性) 思路:用两个指针p1和p2,都指向头节点,开始的时候,p2不动,p1移动k-1次,指向第k个节点.此时,如果p1->next!=null,则同时移动P1和p2.直到p1指向最后一个节点.此时,P2指向倒数第k个节点. C++代码: #include<iostream> using namespace std; struct ListNode { int m_nValue; ListNode* m_pNext; }; Li…