前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 708. 循环有序列表的插入

LeetCode 708. 循环有序列表的插入

作者头像
Michael阿明
发布2021-02-19 10:56:12
9390
发布2021-02-19 10:56:12
举报
文章被收录于专栏:Michael阿明学习之路

文章目录

1. 题目

给定循环升序列表中的一个点,写一个函数向这个列表中插入一个新元素,使这个列表仍然是循环升序的。 给定的可以是这个列表中任意一个顶点的指针,并不一定是这个列表中最小元素的指针。

如果有多个满足条件的插入位置,你可以选择任意一个位置插入新的值,插入后整个列表仍然保持有序

如果列表为空(给定的节点是 null),你需要创建一个循环有序列表并返回这个点。 否则。请返回原先给定的节点。

下面的例子可以帮你更好的理解这个问题:

在这里插入图片描述
在这里插入图片描述

在上图中,有一个包含三个元素的循环有序列表,你获得值为 3 的节点的指针,我们需要向表中插入元素 2。

在这里插入图片描述
在这里插入图片描述

新插入的节点应该在 1 和 3 之间,插入之后,整个列表如上图所示,最后返回节点 3。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/insert-into-a-sorted-circular-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 下一个节点 >= insert && 当前节点 <= insert 的节点
  • 没有找到说明是最大或者最小值,记录值最大的最后一个节点
代码语言:javascript
复制
/*
// Definition for a Node.
class Node {
public:
    int val;
    Node* next;

    Node() {}

    Node(int _val) {
        val = _val;
        next = NULL;
    }

    Node(int _val, Node* _next) {
        val = _val;
        next = _next;
    }
};
*/

class Solution {
public:
    Node* insert(Node* head, int insertVal) {
        if(!head)
        {
            head = new Node(insertVal);
            head->next = head;
            return head;
        }
        Node *newnode = new Node(insertVal);
        Node* biggest = head, *cur = head;
        int biggestVal = head->val;//最大值
        while(true)
        {
            if(cur->val <= insertVal && cur->next->val >= insertVal)
            {	//找到了
                newnode->next = cur->next;
                cur->next = newnode;
                return head;
            }
            if(cur->val >= biggestVal)
            {	//记录最大值节点
                biggestVal = cur->val;
                biggest = cur;
            }
            if(cur->next == head)//转了一圈了
                break;
            cur = cur->next;
        }
        newnode->next = biggest->next;//插入的是最大值或最小值
        biggest->next = newnode;
        return head;
    }
};

20 ms 8.3 MB

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档