147 Insertion Sort List
来源:互联网 发布:国际服务器端口定义 编辑:程序博客网 时间:2024/05/20 19:45
题目链接:https://leetcode.com/problems/insertion-sort-list/
题目:
Sort a linked list using insertion sort.
解题思路:
1、插入排序的通用算法
2、链表的插入排序和数组的插入排序存在差异:
- 链表:当前要插入的元素,对已排好序的链表从前往后比较
- 数组:当前要插入的元素,对已排好序的数组从后往前比较(需要往后挪元素,为插入的元素腾坑)
3、由于插入和删除节点需要知道该节点的先驱,又为了减少指针的个数的使用(不单独采用一个指针指向要比较的元素的前驱),比较节点时一律采取比较当前指针所指节点的后继。即:p指向有序链表的最后一个节点。q指向有序链表中的节点。比较时采用 p.next 和 q.next。
注意:
插入情况大致分三种:
1、插入到头结点之前
2、插入到有序链表最后一个节点之前
3、插入到有序链表最后一个节点之后(需将指针p向后移动一个节点)
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode insertionSortList(ListNode head) { if(head == null) return head; ListNode p = head; while(p.next != null) { ListNode temp = p.next; if(p.next.val < head.val) { temp = p.next; p.next = p.next.next; temp.next = head; head = temp; } else { ListNode q = head; while(q.next.val <= p.next.val && p.next != q.next) q = q.next; if(q.next != p.next) { temp = p.next; p.next = p.next.next; temp.next = q.next; q.next = temp; } } if(temp.val >= p.val) p = p.next; } return head; }}
0 0
- 147Insertion Sort List
- 147 Insertion Sort List
- LeetCode(147) Insertion Sort List
- LeetCode: Insertion Sort List [147]
- LeetCode 147 Insertion Sort List
- [leetcode 147] Insertion Sort List
- LeetCode 147 Insertion Sort List
- LeetCode 147 Insertion Sort List
- [leetcode 147]Insertion Sort List
- leetcode-147 Insertion Sort List
- [LeetCode 147]Insertion Sort List
- Leetcode[147]-Insertion Sort List
- Insertion Sort List - LeetCode 147
- leetcode[147]:Insertion Sort List
- LeetCode(147) Insertion Sort List
- leetcode 147: Insertion Sort List
- [Leetcode]#147 Insertion Sort List
- leetCode #147 Insertion Sort List
- [笔记]Java注解全面解析
- 关于Javascript游戏按键操控移动的思考
- 素数的判断
- uva10404 Bachet’s Game(dp之取石子游戏的胜负)
- Java基础之集合类常见试题
- 147 Insertion Sort List
- 循环队列的顺序表示和实现
- OpenCV Machine Learning 之正态贝叶斯分类器(Normal Bayes Classifier)的用法实例
- 冒泡排序法
- 计算机操作系统---处理机(进程)管理
- linux系统编程:线程同步-互斥量(mutex)
- Java 值传递
- openCV—Python(4)——基本绘图
- 米兰中文离线地图App上线