题目要求:
输入一个链表,输出该链表中倒数第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 getKthFromEnd(ListNode head, int k) {
//另存头节点
ListNode temp = head;
//遍历所有节点获取链表的长度
int count = 0;
while(temp != null){
count++;
temp = temp.next;
}
//再次遍历链表,找到倒数第k个节点,输出结果
for(int i = 0;i < count - k ;i++){
head = head.next;
}
return head;
}
}
执行用时:0 ms, 在所有 Java 提交中击败了100.00% 的用户
内存消耗:39.6 MB, 在所有 Java 提交中击败了34.65% 的用户
-------------------------------------------------------
思路:快慢指针,待补充具体思路
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
ListNode temp = head;
while(temp != null) {
temp = temp.next;
if(k==0) {
head = head.next;
}else {
k--;
}
}
return head;
}
}
执行用时:0 ms, 在所有 Java 提交中击败了100.00% 的用户
内存消耗:39.3 MB, 在所有 Java 提交中击败了79.83% 的用户