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

leetcode, LC5: insertion-sort-list[通俗易懂]题目描述使用插入排序对链表进行排序。Sortalinkedlistusinginsertionsort.示例1输入{3,2,4}输出{2,3,4}解题思路new一个新的ListNode作为选择排序好的链表的表头对于原始链表中的每一个结点2.1.寻找新链表中该结点的插入位置2.2插入该结点返回新链表代码实现/***structListNode{* intval;* structListNode*next;

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

题目描述

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

示例1

输入

{3, 2, 4}

输出

{2, 3, 4}

解题思路

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

代码实现

/** * 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.net/164021.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月23日 下午11:46
下一篇 2022年7月24日 上午6:00


相关推荐

  • 模式先行全新解读微商分销系统

    模式先行全新解读微商分销系统在微商迅速发展的时代下,微商分销系统的需求也日渐上升,这对微商分销系统也有着更高的要求。一款好的微商分销系统需要具备“快速搭建、功能强大、顺畅分销、管理有序,支付便捷,扩展性强”等条件,模式先行,分销模式也是恒量分销系统的一个非常重要的指标。微商分销系统通常为一级/二级/三级分销模式,即品牌商可以发展一级/二级/三级分销商,每一级分销商均可以往下再发展一级/二级分销商。我们以三级分销模式为例解读A…

    2022年5月17日
    42
  • dos窗口编译java程序命令_dos编译java

    dos窗口编译java程序命令_dos编译java随着RESTful风格的接口普及,程序员默认都会使用json作为数据传递的方式。json格式的数据冗余少,兼容性高,从提出到现在已被广泛的使用,可以说成为了Web的一种标准。无论我们服务端使用什么语言,我们拿到json格式的数据之后都需要做jsonDecode(),将json串转换为json对象,而对象默认会存储于HashTable,而HashTable很容易被碰撞攻击。我只要将攻击数据放在j…

    2026年4月14日
    4
  • string.h中的strlen,strcat,strcpy,strncpy,strcmp,strlwr,strupr函数

    string.h中的strlen,strcat,strcpy,strncpy,strcmp,strlwr,strupr函数

    2021年9月28日
    46
  • UITextView 手势触发 TouchesBegan 函数

    UITextView 手势触发 TouchesBegan 函数前几天做了个手势可以改变文章字体大小的功能。开始,在当前view中添加一个UITextView,然后添加-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event函数,可怎么也触发不了,在网上找了些资料,说得也不是很清楚,今天把它总结下。       首先说原因吧,你把UITextView加载到当前view上,

    2022年7月25日
    10
  • java getopt_getopt使用例子

    java getopt_getopt使用例子绝大多数脚本使用 getopts 应该就可以满足需求了 如果需要支持长选项以及可选参数 那么就需要使用 getopt 了 getopt 和 getopts 类似 也是通过冒号来区分选项是否接受参数值 其定义如下 后面没有冒号 表示选项不接参数后面有一个冒号 表示选项必须接参数后面有两个冒号 表示选项参数可选我们来看一下这个命令 example sh a bvalue2argv3 我们看到这

    2026年3月18日
    2
  • Browserify_browses

    Browserify_browses1.Browserify是什么?“Browserifyletsyourequire(‘modules’)inthebrowserbybundlingupallofyourdependencies.”-Browserify.org出自官网的一句话。用通俗的话讲就是:browserify是一个浏览器端代码模块化工具,可以处理模块之间的依赖关系,让服务器端的

    2025年7月29日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号