leetcode206,我发现我也不怎么会反转链表

这道题我可能太久没做或者反转字符串做多了,魔怔了,居然想着双指针一个在头一个在尾巴,然后逐步逼近中间交换了。。一个不难的题目就魔怔了。当然,后面做得出来,就是特别粗爆。用了个数组。。。。可以看看这近乎无语的解法

 

public ListNode reverseList(ListNode head) {
        if(head==null)return null;
        ListNode last=head;
     
        int cnt=0;
        while(last!=null){
            last=last.next;
            cnt++;
        }
        last=head;
        ListNode[] memo=new ListNode[cnt];
        int i=0;
        while(last!=null){
            memo[i]=last;
            last=last.next;
            i++;
        }
        for(int j=cnt-1;j>0;j--){
            memo[j].next=memo[j-1];
        }
        memo[0].next = null;
        return memo[cnt-1];
        
    }

其实没那么复杂啊!

比如1>2>3

不就是先转1和2,变成<1<2 然后最后3>2>1而已啊!不要去想复杂了啊喂!

 ListNode end = null;
        ListNode next = head;
        ListNode pre = null;
        while(head!=null){
           pre = head;
            next =head.next;
           head.next=end;
           end = head;
           head = next;
           
        }
        return pre;

 

这反而题做多了有时候把自己误导了,当然其实也没做多少。。只怪自己蔡。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值