题目链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6.这个链表的倒数第3个节点是值为4的节点. 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表…
面试题 02.02. 返回倒数第 k 个节点 方法一:使用外部空间 // 执行用时: 1 ms , 在所有 Java 提交中击败了 16.75% 的用户 // 内存消耗: 36.8 MB , 在所有 Java 提交中击败了 31.02% 的用户 class Solution { public int kthToLast(ListNode head, int k) { // 朴素的想法是用额外空间记录链表的值 // 因为k都是有效的,所以不会出现越界的情况 List<Integer> list…
面试题 22. 链表中倒数第 K 个节点…
题目链接:https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci/ 实现一种算法,找出单向链表中倒数第 k 个节点.返回该节点的值. 注意:本题相对原题稍作改动 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ int kthToLast(struct ListNod…
要求:输入一个链表,输出该链表中倒数第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(…
题目 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6.这个链表的倒数第3个节点是值为4的节点. 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 思路 先统计链表节点个数 计算从前向后移动步数 代码 class Solution { public: ListNode* getKthFrom…
题目描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6.这个链表的倒数第3个节点是值为4的节点. 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 1.思路 先求出整个链表有多少个数据,然后向后移动n-k+1个位置就行了. 为什么是n-k+1呢?拿例子来说,n=5,k=2,n-k=3:如…
问题描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6.这个链表的倒数第3个节点是值为4的节点. 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 代码 /** * Definition for singly-linked list. * struct ListNode { * int…
/* 题目: 链表中倒数第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…
输入一个链 : 1 -> 3 -> 5 -> 6 -> 8 输入 k  = 2 返回 6 这个节点 python(2.7) def getNode(head, k): if(head==None or k==0): #避免控制指针 return None; node = head listNum = 1 while(node.next != None): listNum += 1 node = node.next if(k>listNum): return None coun…