FTPrep, 92 Reverse Linked List II

来源:互联网 发布:mac怎么退出vim 编辑:程序博客网 时间:2024/06/06 01:19

这题很不错,是对之前的 reverse list 的加强。之前是reverse the whole list, 这里是partially的。

也就是说要break up成3段,前两段的头尾都要记录,最后一段要记录头结点,最后拼接。

中间那段需要reverse的,就通过之前的方法:头删+头插,头删需要2个pointer,头插需要一个pointer。

代码如下:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */class Solution {    public ListNode reverseBetween(ListNode head, int m, int n) {        if(m==n) return head;        ListNode dummy=new ListNode(0);        dummy.next=head;        ListNode curr=dummy; // 一开始就指向第一个node了,要指向第m-th个node,只要移动(m-1)次。        for(int count=1; count<m; count++){            curr=curr.next;        }        ListNode lastNodeInFirstFragment= curr; // 标记好第一个fragment的最后一个node        ListNode lastNodeInSecondFragment =curr.next; // 同时这后面的一个node,也是第二个fragment的最后一个node,在之前就判断了(m==n)的情况                // 下面的三个指针就是 reverse list那道题 #206 用到的三个指针:前两个用于老链头删:1个用来向后移动维护list,另一个用来track 当前被删除的node;        // 第三个指针就是新链dummyNode,用于新建list的通用做法。        curr=curr.next;        ListNode tail=curr;             ListNode dummyForSecondFrag= new ListNode(0);                for(int count=1; count<=n-m+1; count++){            tail=tail.next;            curr.next=dummyForSecondFrag.next;            dummyForSecondFrag.next=curr;            curr=tail;        }                lastNodeInFirstFragment.next=dummyForSecondFrag.next;        lastNodeInSecondFragment.next=tail;        return dummy.next;    }}



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 法院判决离婚对方上诉怎么办 法院判决离婚上诉中级法院怎么办 刑诉中二审发现一审事实错误怎么办 法院判决过了执行期怎么办 刑事犯罪判决后法院未执行怎么办 法院起诉对方不签字怎么办 法院判离婚对方不要签字怎么办 老人不能到法院签字怎么办 法院判决书被告人没签字怎么办? 法院判决离婚一方不签字怎么办 法院判决离婚对方不签字怎么办 法院已判决被告没有钱怎么办 判决还款但是的确没有钱怎么办 强执执行没有钱怎么办 法院判了没钱还怎么办 判决后对方不给钱怎么办 欠钱判决后没钱怎么办 判决了还不给钱怎么办 驾驶证到期本人在监狱服刑怎么办 轻伤过了追诉期怎么办 判决生效书丢了怎么办 高层17楼水压低怎么办 高层六楼水压低怎么办 高层6楼水压低怎么办 高层5楼水压低怎么办 高层五楼水压小怎么办 高层四楼水压低怎么办 高层6楼水压不够怎么办 马桶水箱盖坏了怎么办 马桶水箱盖子坏了怎么办 绿萝的叶子黄了怎么办 绿萝叶子烂了怎么办 还款协议签订后一方反悔怎么办 签了协议想反悔怎么办 体温计打碎了水银找不到了怎么办 模拟城市5核电站爆炸怎么办 日本地铁票丢了怎么办 在日本地铁票丢了怎么办 首付交了没合同怎么办 工程干完不给签合同怎么办 寄存密码纸丢了怎么办