[LeetCode 第6题] -- Insertion Sort List

简介: 题目链接: Insertion Sort List题目意思: 利用插入排序,对链表排序代码:/** * Definition for singly-linked list.


题目链接: Insertion Sort List

题目意思: 利用插入排序,对链表排序

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    void sort (vector<ListNode*> &arrList, int size);
    ListNode *insertionSortList(ListNode *head);
};

void Solution::sort (vector<ListNode*> &arrList, int size) {
    for (int i = 1; i < size; i++) {
        int j = i-1;
        int tmp = arrList[i]->val;
        for (j = i-1; j >= 0; j--) {
            if (tmp >= arrList[j]->val) {
               break;
            }
            arrList[j+1]->val = arrList[j]->val;
        }
        if (j < (i-1)) {
            arrList[j+1]->val = tmp;
        }
     }
}

ListNode* Solution::insertionSortList(ListNode *head) {
     if (NULL == head) {
     	 return NULL;
     }
     int size = 0;
     ListNode *tmpHead = head;
     while (tmpHead != NULL) {
         size++;
         tmpHead = tmpHead->next;
     }
     vector<ListNode*> arrList;
     tmpHead = head;
     while (tmpHead != NULL) {
         arrList.push_back(tmpHead);
         tmpHead = tmpHead->next;
     }
     sort(arrList, size);
     return head;
}



目录
相关文章
|
6月前
|
Java
Leetcode 114. Flatten Binary Tree to Linked List
思路也很简单,先把root的左子树(如有)变成单链表 leftlinkedlist,把root的右子树(如有)变成单链表 rightlinkedlist,再把root的右节点变成leftlikedlist,再把rightlinkedlist接到leftlinkedlist后面,代码如下。
20 1
|
6月前
|
C++
Leetcode Copy List with Random Pointer(面试题推荐)
给大家推荐一道leetcode上的面试题,这道题的具体讲解在《剑指offer》的P149页有思路讲解,如果你手头有这本书,建议翻阅。
26 0
|
6月前
Leetcode 19.Remove Nth Node From End of List
删除单链表中的倒数第n个节点,链表中删除节点很简单,但这道题你得先知道要删除哪个节点。在我的解法中,我先采用计数的方式来确定删除第几个节点。另外我在头节点之前额外加了一个节点,这样是为了把删除头节点的特殊情况转换为一般情况,代码如下。
20 0
|
5月前
|
C++ 容器
【C++】STL容器——探究List与Vector在使用sort函数排序的区别(14)
【C++】STL容器——探究List与Vector在使用sort函数排序的区别(14)
|
5月前
|
大数据 Java 程序员
「LeetCode合集」链表(List)及经典问题
「LeetCode合集」链表(List)及经典问题
27 0
|
10月前
|
算法 C++
SGI-STL源码剖析之list::sort()
SGI-STL源码剖析之list::sort()
77 0
LeetCode 75 Sort Colors 颜色分类(荷兰国旗)
Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.
69 0
LeetCode 141. 环形链表 Linked List Cycle
LeetCode 141. 环形链表 Linked List Cycle
|
2月前
|
存储 安全 Java
java集合框架及其特点(List、Set、Queue、Map)
java集合框架及其特点(List、Set、Queue、Map)
|
29天前
|
Java
Java使用List去重的四中方式
Java使用List去重的四中方式
19 6

热门文章

最新文章