反转链表

环境:牛客的编译环境
语言:JavaScript
☕️难点:没有考虑到底数为0,指数为负数和正数的不同情况。
题目:输入一个链表,反转链表后,输出新链表的表头。
解题思路:我自己的方法很简单..还是遍历一遍链表,一边遍历一边存储到数组arr中,先将该数组reverse,之后再for循环该数组,设置当前i结点的next为i+1结点。
最后再返回第0个结点。
我的代码:

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function ReverseList(pHead)
{
    // write code here
    var node = pHead,
        arr = [],
        nHead = null;
    if(pHead != null){
        while(node){
            arr.push(node);
            if(node.next == null)
                break;
            node = node.next;
        }
        arr = arr.reverse();
        for(let i = 0; i < arr.length; i++){
            arr[i].next = arr[i + 1];
            if(i == arr.length - 1)
                arr[i].next = null;
        }
        return arr[0];
    }
    else return null;
    
}
大佬的方法(目前还没看懂):

链接:
public class Solution {

public static ListNode ReverseList(ListNode head) {

if(head==null)

return null;

ListNode reversedHead=null;

ListNode current=head;

ListNode tmp=null;

ListNode pre=null;

while(current!=null){

tmp=current.next;

current.next=pre;

if(tmp==null)

reversedHead=current;

pre=current;

current=tmp;

}

return reversedHead;

}

}


你可能感兴趣的:(反转链表)