博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode之Reorder List
阅读量:6502 次
发布时间:2019-06-24

本文共 1462 字,大约阅读时间需要 4 分钟。

Given a singly linked list LL0→L1→…→Ln-1→Ln,

reorder it to: L0→LnL1→Ln-1→L2→Ln-2→…

You must do this in-place without altering the nodes' values.

For example,

Given {1,2,3,4}, reorder it to {1,4,2,3}.

这道题分三步:

1:首先将原来的链表拆分成两部分,用next和next.next分

2:将第二部分链表反转

3:将第一部分链表和第二部分反转了的链表merge

Takeaway Messages from This Problem

The three steps can be used to solve other problems of linked list. A little diagram may help better understand them.

Reverse List:

reverse-list

Merge List:

merge-list-in-place

下面附上程序源码:

public void reorderList(ListNode head) {        if(head == null || head.next==null)  	    {  	        return;  	    }  	    ListNode walker = head;  	    ListNode runner = head;  	    while(runner.next!=null && runner.next.next!=null)  	    {  	        walker = walker.next;  	        runner = runner.next.next;  	    }  	    ListNode head1 = head;  	    ListNode head2 = walker.next;  	    walker.next = null;  	    head2 = reverse(head2);  	    while(head1!=null && head2!=null)  	    {  	        ListNode next = head2.next;  	        head2.next = head1.next;  	        head1.next = head2;  	        head1 = head2.next;  	        head2 = next;  	    }      }    private ListNode reverse(ListNode head)  	{  	    ListNode pre = null;  	    ListNode cur = head;  	    while(cur!=null)  	    {  	        ListNode next = cur.next;  	        cur.next = pre;  	        pre = cur;  	        cur = next;  	    }  	    return pre;      }

  

转载于:https://www.cnblogs.com/gracyandjohn/p/4432402.html

你可能感兴趣的文章
log4j 转载
查看>>
[js高手之路] dom常用API【appendChild,insertBefore,removeChild,replaceChild,cloneNode】详解与应用...
查看>>
IIS并发连接数和数据库连接池
查看>>
软件工程作业 - word count
查看>>
JavaWeb使用Session防止表单重复提交
查看>>
JAVA-JSP之include指令
查看>>
Ubuntu中update-grub2与update-grub的区别
查看>>
nginx反向代理
查看>>
ASP.NET Core的身份认证框架IdentityServer4(6)- 开始
查看>>
service
查看>>
shell与if相关参数
查看>>
用fail2ban阻止ssh暴力破解root密码
查看>>
Mysql Order By 字符串排序,mysql 字符串order by
查看>>
Python cos() 函数
查看>>
system.web下的HttpModules节点和system.webServer下的modules节点的配置区别
查看>>
Database Setup
查看>>
为Docker配置阿里加速器,系统为Debian8
查看>>
已知两条线段端点,判断是否相交及交点
查看>>
mac终端下svn常用命令
查看>>
电话号码校验
查看>>