Leetcode035--使用尾插法局部旋转链表
来源:互联网 发布:蚁群算法 python 编辑:程序博客网 时间:2024/06/08 01:26
一、原题
For example:
Given
1->2->3->4->5->NULL
, m = 2
and n = 4
, return
1->4->3->2->5->NULL
. 二、中文
给定一个单链表,将第m到第n个之间的元素进行转
三、举例
给出 1->2->3->4->5->NULL
, m = 2
and n = 4
,
最后得到 1->4->3->2->5->NULL
.
四、思路
就是考察尾插法,我们首先找到第一个元素的头结点,然后根据传入的参数来确定两个结点之间的距离,最后根据两个结点之间的距离进行尾插的操作,所谓尾插就是以第一个元素为头,第一个元素左边的元素为尾,然后不断地将头元素后边的元素插入到尾元素的前面,最终达到单链表局部旋转的操作。
五、程序
package code;public class LeetCode48{public static void main(String args[]){ListNode list1 = new ListNode(1);ListNode list2 = new ListNode(2);ListNode list3 = new ListNode(3);ListNode list4 = new ListNode(4);ListNode list5 = new ListNode(5);list1.next = list2;list2.next = list3;list3.next = list4;list4.next = list5;ListNode list = reverseBetween(list1, 2, 5);while(list != null){System.out.print(list.val+" ");list = list.next;}}//将链表以x为依据分割开来public static ListNode reverseBetween(ListNode head, int m, int n) { ListNode root = new ListNode(0); ListNode left = root; root.next = head; for (int i = 1; i < m && left != null; i++) { left = left.next; }if(left.next != null){ListNode mid = left.next;ListNode right;n = n - m + 1;for(int i = 1; i < n && mid.next != null; i++){right = mid.next;//进行所谓的 尾插操作 mid.next = right.next; right.next = left.next; left.next = right;}}return head;}}
--------------------------------output-----------------------------------
1 5 4 3 2
1 0
- Leetcode035--使用尾插法局部旋转链表
- LeetCode035 Search Insert Position
- 单向链表旋转
- 旋转链表
- LintCode-旋转链表
- LintCode-旋转链表
- 旋转链表
- LintCode:旋转链表
- 旋转链表
- 旋转链表
- 链表旋转
- 旋转链表
- 旋转链表
- 旋转链表
- LintCode : 旋转链表
- 旋转链表
- 旋转链表-LintCode
- 61.链表旋转
- 内存空间 逻辑地址空间 相对地址 绝对地址
- POJ 2479 Maximum sum && POJ 2593 Max Sequence
- idea注册码
- DP入门
- JAVA中的流
- Leetcode035--使用尾插法局部旋转链表
- C++第1次实验-标准体重
- SSM框架下的分页查询显示
- 用ffmpeg做的视频播放demo
- jpGraph类库的定义
- linux常用基本命令
- NDK学习( 三),多线程与异步回调
- HDU-4417 Super Mario,划分树+二分!
- Android ioc架构编写