LeetCode Solutions : Reorder List

Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L
0→Ln→L1→Ln-1→L2→Ln-2→…

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

For example,

Given {1,2,3,4}, reorder itto {1,4,2,3}.

Considering the following steps:

 * 1. split such list into two list, first and second, according to slow and fast point
 * 2. reverse the second list
 * 3. insert the second list into the first list

coding solution:


/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }* */
public class Solution {public void reorderList(ListNode head) {if(head!=null&&head.next!=null){ListNode low=head;//1. split such list into two list, first and second, according to slow and fast pointListNode fast=head;while(fast.next!=null&&fast.next.next!=null){low=low.next;fast=fast.next.next;}ListNode first=head;ListNode second=low.next;low.next=null;second=reverse(second);//2. reverse the second listwhile(second!=null){//3. insert the second list into the first listListNode p1=first.next;ListNode p2=second.next;first.next=second;second.next=p1;first=p1;second=p2;}}}private ListNode reverse(ListNode head){if(head==null||head.next==null)return head;ListNode pre=head;ListNode cur=head.next;while(cur!=null){ListNode nextNode=cur.next;cur.next=pre;pre=cur;cur=nextNode;			}head.next=null;return pre;}
}


版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/zfyouxi/p/4850687.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双系统linux触摸板不能用,windows系统与ubuntu双系统导致笔记本触摸板失灵的解决办法(非输入代码)...

先说一下我现在的笔记本使用的系统,windows10 64位+ubuntu14.04 64位。这几天把ubuntu装好后本来毫无问题的,用的飞起~可是昨天不知道什么原因,触摸板突然失灵了,插上鼠标可以用,就是触摸板不能…

JS 入门经典 第三章 判断、循环和函数

1、比较运算符 在所有的比较运算符中&#xff0c;和&#xff01;的优先级最低&#xff0c;而>、<、<、>则具有相同的优先级 所有的比较运算度的优先级都比算数运算符要低&#xff0c;所以先执行算数运算符&#xff0c;在执行比较运算符。 2、字符串的比较 JS将按照…

linux c fifo阻塞写和非阻塞写,linux—FIFO的使用与非阻塞标志(O_NONBLOCK)的影响

FIFO文#include #include int mkfifo( const char*pathname, mode_t mode);参数&#xff1a;pathname&#xff1a;FIFO的路径名文件名。mode&#xff1a;mode_t类型的权限描述符&#xff0c;同open的参数。返回值&#xff1a;成功&#xff1a;返回0失败&#xff1a;如果文件已经…

Servlet的学习之Request请求对象(2)

在上一篇《Servlet的学习(十)》中介绍了HttpServletRequest请求对象的一些常用方法&#xff0c;而从这篇起开始介绍和学习HttpServletRequest的常用功能。 使用HttpServletRequest可以防止盗链行为&#xff0c;什么是盗链行为&#xff0c;比如说在一个别的网站上超链接&#xf…

如何提高linux的时钟精度,Linux时钟精度提高有什么办法?

2 动态高精度时钟设计和实现动态高精度时钟设计方案借鉴了KURT-Linux思想&#xff0c;但与其不同的是提供一个与标准Linux核心时钟并行的具有精密刻度的实时时钟&#xff0c;并与原核心时钟区别开。采用X86体系CPU提供的TSC作为高精度的时间标度&#xff0c;权衡一定时间段(如一…

c语言循环程序怎么编程,c语言程序(5):循环结构程序设计

#include #include #include /*循环结构:1.基本循环语句while循环do_while循环for循环1.1 所有的的循环&#xff0c;都是满足条件循环1.2 while循环while(条件){循环体;}1.3 kbhit() :监测键盘是否按键&#xff0c;1.4do{循环体;}while(count<3);1.5 for循环for(表达式1;表达…

Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例

1. 通过多线程改进刚才的聊天程序&#xff0c;这样我就可以实现在一个窗口发送和接收数据了 2. 代码示例&#xff1a; &#xff08;1&#xff09;SendThread.java&#xff0c;如下&#xff1a; 1 package com.himi.udpDemo2;2 3 import java.io.BufferedReader;4 import java.…

c语言宿舍管理设计报告,C语言课程设计—学生宿舍管理系统设计报告.doc

word格式精心整理版范文范例 学习指导课 程 设 计 报 告课程名称 C语言程序设计课题名称 学生宿舍管理系统专 业班 级学 号姓 名指导教师2012年6月19日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计课 题 学生宿舍管理系统专业班级学生姓名学 号指导老师审 批任务书…

EF编辑

//修改推荐的信息 var productRe db.Shop_ProductRecommends.Single(item > item.Id model.Id); productRe.seat model.seat; db.Set<Shop_ProductRecommends>().Attach(productRe); db.Entry(productRe).State EntityState.Modified;转载于:https://www.cnblogs.…

考勤管理系统c语言,C语言课程设计学生考勤系统最终版(范文1)

《C语言课程设计学生考勤系统.doc》由会员分享&#xff0c;可免费在线阅读全文&#xff0c;更多与《C语言课程设计学生考勤系统(最终版)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、&#xff1b;return(head)&#xff1b;}voidenter()*录入函数*{structS…

关于类和接口的一些小笔记

如果一个类实现了多个接口&#xff0c;如果将这个类实例化&#xff0c;那么这些接口之间可以互相调用的。转载于:https://www.cnblogs.com/pilihaotian/p/4868609.html

汇编语言调用c语言ads,ADS1.2 在汇编代码中调用C函数

EDA365欢迎您登录&#xff01;您需要 登录 才可以下载或查看&#xff0c;没有帐号&#xff1f;注册x, U) b) } U8 \" d/ v( \$ ~ T对于ARM体系来说&#xff0c;不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard)&#xff0c;…

c语言选择法排序案例,谁能给我一个c语言选择排序法的简单例子

满意答案evil83752014.02.27采纳率&#xff1a;51% 等级&#xff1a;11已帮助&#xff1a;7590人#include int main(){int array[100], n, c, d, position, swap;printf("Enter number of elements\n");scanf("%d", &n);printf("Enter %d inte…

huffman算法c语言实验报告,huffman二叉树实验报告--数据结构(c语言).doc

江海强 PAGE 7数 据 结 构 作 业 报 告——Huffman二叉树实验报告姓名&#xff1a;江海强班级&#xff1a;070921班学号上机时间&#xff1a;2010-报告时间&#xff1a;2010-10-26摘要1.实验目的本实验是为了让我们深入了解Huffman二叉树&#xff0c;学会使用Huffman编码…

《炉石传说》建筑设计欣赏(7):采用Google.ProtocolBuffers处理网络消息

这一次&#xff0c;琢磨了一下Unity3D网络游戏发展的网络信息处理。服务器的网络游戏一般都是自主研发&#xff0c;因此&#xff0c;相应的网络消息处理应该培养自己。client/现在使用的邮件服务器之间的价差JSON和Google.ProtocolBuffers有两种常见的方法。平炉码看其处理。代…

tarjan算法c语言,tarjan算法板子 - osc_e45irv7l的个人空间 - OSCHINA - 中文开源技术交流社区...

无向图概念时间戳\(dfn[x]\),在深度优先遍历中&#xff0c;按照每个节点第一次被访问的顺序&#xff0c;依次做整数标记追溯值\(low[x]\),通过非搜索边能到达的最小时间戳割边判定法则无向边\((x,y)\)是割边/桥&#xff0c;当且仅当存在x的一个子节点满足\(dfn[x] < low[y]\…

流和文件

流&#xff1a;流是数据的传输方式&#xff1b;C程序处理一个流而不是直接处理文件。你声明一个FILE *fp &#xff0c;并把fopen(某个文件)返回的值赋予fp这两个动作就相当于建立了一个水龙头&#xff0c;当你用getc(fp)之类的输入函数读取文件字符时就相当于拧开了水龙头&…

小球进盒子C语言,N个小球放进M个盒子算法-Go语言中文社区

N个小球放入M个盒子共有多少种方法&#xff0c;并输出的算法设计&#xff1a;算法思路1 &#xff1a;暴力填充盒子每个小球都可能放入M个盒子的任意一个&#xff0c;所以直接根据小球个数做递归即可,然后将存储放入hash中排重//TODO算法思路2 &#xff1a;递归填充盒子即&#…

r语言c5.0要求因子输出,R语言中因子的创建与使用

原标题&#xff1a;R语言中因子的创建与使用因子在R语言中可以用来表示名义型变量或有序变量。名义变量一般表示类别&#xff0c;如性别&#xff0c;种族等等。有序变量是有一定排序顺序的变量&#xff0c;如职称&#xff0c;年级等等。在R语言中&#xff0c;名义变量和有序变量…

WinForm中使用AnyCAD三维控件 の 初始化

在WinForm中可以方便的集成AnyCAD.Net三维控件&#xff0c;只需要以下几部即可完成。 一、添加DLL程序集 AnyCAD.Foundation.Net.dll AnyCAD.Presentation.Net.dll AnyCAD.Exchange.Net.dll 二、初始化控件 1.首先创建一个窗体 2.在窗体上放置一个Panel用来放置三维控件 3.初始…