链表中倒数第k个节点

2018-10-09  本文已影响0人  我的天气很好啦

🍞环境:牛客的编译环境
🍰语言: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;

 }

}

上一篇下一篇

猜你喜欢

热点阅读