• 售前

  • 售后

热门帖子
入门百科

LeetCode - 剑指 Offer II 029. 排序的循环链表 - java - 细喔

[复制链接]
便宜老鼠药沼 显示全部楼层 发表于 2022-1-14 06:20:08 |阅读模式 打印 上一主题 下一主题
文章目录



题目




题目分析

    题目给我们的链表,是一个无线循环的链表。【形成一个“环”】
要求我们 在不影响原先升序的情况下,插入一个指定 val 值 的节点。 返回值还是返回 题目给的 head。

  

解题思维

    要求我们在不影响原先链表的升序情况下,插入一个 指定val值的节点。
而且题目给我们head 只是 链表中任意的一个节点,此节点val值,可是最大的,也可能是最小的,又可能是不大不小的那个。
那么,根据题目所给head:

那么,以它为基础。在它后面插入一个节点。【注意这里是单向链表,在没有的值前一个节点的val值的情况下,是不能在 head节点的前面插入的节点。很可能会影响原先链表的升序排列】
那么了,会有以下三种情况:

另外还有一种特殊情况: 链表为 空【链表内没有节点】,此时就是直接创造一个 insertVal 节点,将其 next 值 置为 本身,让它自身成为  一个“环” / 一个循环。

  

代码如下:

[code]class Solution {    public Node insert(Node head, int insertVal) {    // 特殊情况        if(head == null){            head = new Node(insertVal);            head.next = head;            return head;        }        Node cur = head;        Node flag = null;        while(cur != flag){            if(flag == null){// 标记 head 头节点位置,作为后面跳出循环的条件                flag = head;            }            // 情况 1  和 情况 2            if((cur.val = insertVal) || (cur.val > cur.next.val && (insertVal>=cur.val || insertVal

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作