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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python判断文件、文件夹是否存在,不存在则创建

    Python判断文件、文件夹是否存在,不存在则创建本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末判断文件是否存在,不存在则创建#判断文件是否存在不存在则创建一个ifnotos.path.isfile(filename):fd=open(filename,mode=”w”,encoding=”utf-8″)fd.close()判断文件夹是否存在,不存在则创建#判断文件夹是否存在,不存在则创建一个ifnotos.path.exists(path):os.mkdir(p

    2022年6月25日
    53
  • linux futex浅析[通俗易懂]

    linux futex浅析[通俗易懂]Futex,FastUserspacemuTEXes,作为linux下的一种快速同步(互斥)机制,已经存在了很长一段时间了(sincelinux2.5.7)。它有什么优势?又提供了怎样一些功能,本文就简单探讨一下。futex诞生之前在futex诞生之前,linux下的同步机制可以归为两类:用户态的同步机制和内核同步机制。用户态的同步机制基本上就是利用原子指令实现的spinlock。最简单的实现就是使用一个整型数,0表示未上锁,1表示已上锁。trylock操作就利用原子指令尝试将0改为1

    2022年9月21日
    2
  • OpenWRT rootfs 的生成过程[通俗易懂]

    OpenWRT rootfs 的生成过程[通俗易懂]在include目录中有一个rootfs.mk,里面主要是:1.定义了opkg=2.定义了prepare_rootfsopkg=省略TARGET_DIR_ORIG:=$(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)defineprepare_rootfs…省略…rootfs.mk被以下两个…

    2022年9月1日
    5
  • c++ STL_鱼c

    c++ STL_鱼c学校并未教授C++,当初接触的C++的STL,也是皮毛而已。结合对Java的集合框架等内容的认识,回顾这部分内容,收获很大。文章目录概述STL六大组件简介三大组件介绍1.容器2.算法3.迭代器常用容器1.string容器string容器基本概念string容器常用操作2.vector容器vector容器基本概念vector迭代器vector的数据结构vector常用API操作…

    2022年10月16日
    3
  • Linux-nmap命令使用

    Linux-nmap命令使用用namp对局域网扫描一遍,然后查看arp缓存表就可以知道局域内ip-mac的对应了namp比较强大也可以直接扫描mac地址和端口进行ping扫描,打印出对扫描做出响应的主机:  nmap-sP192.168.1.0/24仅列出指定网络上的每台主机,不发送任何报文到目标主机:  nmap-sL192.168.1.0/24  探测目标主机开放的端口,可以指定一个以…

    2022年5月13日
    37
  • HBase的shell命令行界面按退格键(Backspace)无法删除问题

    HBase的shell命令行界面按退格键(Backspace)无法删除问题HBase的shell命令行界面按退格键(Backspace)无法删除问题

    2022年4月23日
    47

发表回复

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

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