leetcode笔记--Insertion Sort List
来源:互联网 发布:二手域名交易平台排名 编辑:程序博客网 时间:2024/05/20 22:39
题目:难度(Medium)
Sort a linked list using insertion sort.
Tags:Linked List Sort
Similar Problems:(M) Sort List
分析:使用插入排序进行排序,插入排序:直接插入排序O(n2)、折半插入排序O(n2)、希尔排序O(nlogn)、归并排序O(nlogn)
我采用直接插入排序。该算法的基本操作是:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表
初始时,第一个记录可看成是一个有序表,然后从第二个记录起逐个插入,直至整个序列按关键字非递减排列
为方便操作,为排好序的链表装上一个“头节点”
代码实现:
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def insertionSortList(self, head): """ :type head: ListNode :rtype: ListNode """ if head is None or head.next is None: return head #为方便操作,为排好序的链表装上一个“头节点” head1 = ListNode(0) #head1.next = None q = head #q为当前要插入的元素 while q is not None: #注意:在insertInToSortedList的第2个参数node即此循环中的q,由于insertInToSortedList的最后一句node.next = q #改变的node.next的指向即本循环中q.next的指向,所以必须先记录下本循环中q的指向,以防丢失q的指向 #故在此添加node = q q = q.next语句,否则会报错 node = q q = q.next head1 = self.insertInToSortedList(head1, node) return head1.next #向带有头节点的有序表中插入一个节点 def insertInToSortedList(self, head, node): p = head q= head.next while q is not None: if q.val > node.val: break else: p = q q = q.next #此时p指向要插入的位置的前驱,q为要插入位置的后继 p.next = node node.next = q return head
0 0
- leetcode笔记--Insertion Sort List
- Insertion Sort List | leetcode
- Leetcode: Insertion Sort List
- [LeetCode] Insertion Sort List
- Leetcode: Insertion Sort List
- leetcode-Insertion Sort List
- [LeetCode]Insertion Sort List
- 【LeetCode】Insertion Sort List
- LeetCode | Insertion Sort List
- LeetCode - Insertion Sort List
- [LeetCode] Insertion Sort List
- Insertion Sort List (LeetCode)
- [LeetCode] Insertion Sort List
- [LeetCode]Insertion Sort List
- leetcode Insertion Sort List
- Insertion Sort List -- LeetCode
- Insertion Sort List (LeetCode)
- LeetCode Insertion Sort List
- JNA了解与使用
- SpringMVC+shiro+hibernate权限管理整合
- MySQL_面向对象访问.php
- ZOJ-2965-Accurately Say "CocaCola"!【5th浙江省赛】
- CGI,FASTcgi,PHP-fpm之间的关系
- leetcode笔记--Insertion Sort List
- mysql 技术总结
- 再次接触"泛型"
- 深度学习框架的评估与比较
- Android 重启的几种方式
- 开源项目源码解析
- Zhi-Hua Zhou点评AI领域会议
- HDU 1754 I Hate It
- leetcode笔记--Add Two Numbers