147. Insertion Sort List--单向链表移动
来源:互联网 发布:js获取radio选中状态 编辑:程序博客网 时间:2024/05/17 02:44
Sort a linked list using insertion sort.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode insertionSortList(ListNode head) { }}
大神们的解决思路如下:
建立一个node:helper作为已排序链表的头,建立三个辅助指针pre,cur,next。pre用于指定已排序链表的前一帧,cur和next用于原始链表的当前帧和下一帧。即:
helper(pre)->null
head(cur)->first(next)->…->null
利用代码段
cur.next = pre.next;pre.next = cur;pre = helper;cur = next;
来使得cur指的帧插入pre和pre.next之中。得到:
helper(pre)->head->null
head->first(cur)->second(next)->…->null
再通过代码段
while( pre.next != null && pre.next.val < cur.val ){ pre = pre.next;}
来是的pre.next和cur进行毕竟,对如下情况:
helper(pre)->head->first->null
head->first->second(cur)->third(next)…->null
若pre.next(head)
public ListNode insertionSortList(ListNode head) { if( head == null ){ return head; } ListNode helper = new ListNode(0); //new starter of the sorted list ListNode cur = head; //the node will be inserted ListNode pre = helper; //insert node between pre and pre.next ListNode next = null; //the next node will be inserted //not the end of input list while( cur != null ){ next = cur.next; //find the right place to insert while( pre.next != null && pre.next.val < cur.val ){ pre = pre.next; } //insert between pre and pre.next cur.next = pre.next; pre.next = cur; pre = helper; cur = next; } return helper.next; }
阅读全文
0 0
- 147. Insertion Sort List--单向链表移动
- [LeetCode] Insertion Sort List 单向链表插入排序
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 获取RecyclerView的可视条目索引
- docker-machine 部署 docker swarm手记
- Error configuring application listener of class org.springframework.web.util.Log4jConfigListener
- 如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技、科技金融等概念的
- 热修复Tinker的使用方法
- 147. Insertion Sort List--单向链表移动
- View的工作原理之“事件分发机制”
- Java四大域总结
- 100小时掌握seo学习要诀
- 链表的面试题总结
- 为汽车和工业应用设计低成本手势感应系统---凯利讯半导体
- java多线程实现的常用两种方法
- Mybatis功能整理
- 2017.12.6-2017.12.20周报