前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode, LC5: insertion-sort-list[通俗易懂]

leetcode, LC5: insertion-sort-list[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-15 10:48:50
1540
发布2022-09-15 10:48:50
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

题目描述

使用插入排序对链表进行排序。 Sort a linked list using insertion sort.

示例1

输入 {3, 2, 4} 输出 {2, 3, 4}

解题思路

  1. new 一个新的 ListNode 作为选择排序好的链表的表头
  2. 对于原始链表中的每一个结点 2.1. 寻找新链表中该结点的插入位置 2.2 插入该结点
  3. 返回新链表

代码实现

代码语言:javascript
复制
/** * struct ListNode { * int val; * struct ListNode *next; * }; */

class Solution { 
   
public:
    /** * * @param head ListNode类 * @return ListNode类 */
    ListNode* insertionSortList(ListNode* head) { 
   
        // write code here
        if(head == NULL || head->next == NULL) return head;
        
        ListNode* currNode;
        ListNode* retLListHead = new ListNode(0);
        ListNode* retLListCurrNodeLast;
        ListNode* retLListCurrNode;
        while(head){ 
   
            currNode = head;
            retLListCurrNodeLast = retLListHead;
            retLListCurrNode = retLListCurrNodeLast->next;
            head = head->next;
            while(retLListCurrNode && retLListCurrNode->val < currNode->val){ 
   
                retLListCurrNodeLast = retLListCurrNodeLast->next;
                retLListCurrNode = retLListCurrNode->next;
            }
            currNode->next = retLListCurrNode;
            retLListCurrNodeLast->next = currNode;
        }
        return retLListHead->next;
    }
};

运行结果

运行时间:27ms 占用内存:632k

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164021.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
    • 示例1
    • 解题思路
    • 代码实现
    • 运行结果
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档