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