🍞环境:牛客的编译环境
🍰语言:JavaScript
☕️难点:..一般
🍊题目:输入一个链表,输出该链表中倒数第k个结点。
🌟解题思路:我的方法是遍历一遍链表,边遍历边存入一个数组中,之后再直接利用数组下标去读取倒数第k个结点。
但是我看讨论里面有的朋友会用另一种方法去解题,从第一个开始,知道找到第k个之后,让第一个和第k个同时向后移动,当第k个的next为null时,就说明第一个此时所指的结点是倒数第k个。
🍇我的代码:
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function FindKthToTail(head, k)
{
// write code here
var node = head;
var list = [];
var result = null;
if(head != null){
while(node){
list.push(node);
node = node.next;
}
return list[list.length - k];
}
else return null;
}
🍌别人的代码:
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null||k<=0){
return null;
}
ListNode pre=head;
ListNode last=head;
for(int i=1;i<k;i++){
if(pre.next!=null){
pre=pre.next;
}else{
return null;
}
}
while(pre.next!=null){
pre = pre.next;
last=last.next;
}
return last;
}
}
网友评论