题目
https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/
思路
方法一:
先遍历长度
再确定到数第k个是整数的哪个
考点:
1、链表的遍历
易错点:
1、dummyHead的设置
2、第二个循环是否判断数字的大小
方法二、
前后指针去解决
第一次遍历k个后 前指针和后指针的距离是k
等到第二次遍历后 前后指针的距离是 k-1 正好是结果
class Solution {
/**
先遍历长度
再确定到数第k个是整数的哪个
*/
public ListNode getKthFromEnd(ListNode head, int k) {
if(head==null||k<=0){
return head;
}
int length = 0;
ListNode dummyHead = head;
while(dummyHead!=null){
length++;
dummyHead = dummyHead.next;
}
int index = 0;
while (index<length-k){
head = head.next;
index++;
}
return head;
}
/**
*
* @param head
* @param k
* @return
* 第一次遍历k个后 前指针和后指针的距离是k
* 等到第二次遍历后 前后指针的距离是 k-1 正好是结果
*/
public ListNode getKthFromEnd(ListNode head, int k) {
ListNode pre = head,later = head;
for (int i = 0; i < k; i++) {
pre = pre.next;
}
//
while(pre!=null){
pre = pre.next;
later = later.next;
}
return null;
}
}
后记
可以不获取链表长度,直接遍历出来么