当前位置:网站首页>[offer29] sorted circular linked list
[offer29] sorted circular linked list
2022-07-06 12:24:00 【Vigorous waist Nuo dance】
Topic summary : Give you a number , You are required to insert the data into a sorted circular linked list , Make the final linked list ascending .
General train of thought : Distinguish the three situations of the linked list : Empty list 、 Linked list without maximum or minimum value 、 Linked list with maximum and minimum values . Deal with the three situations in turn .
subject
A point in a monotone nondecreasing list of a given cycle , Write a function to insert a new element into the list insertVal , Make the list still cyclic ascending .
Given can be the pointer to any vertex in the list , Not necessarily a pointer to the smallest element in the list .
If there are multiple insertion positions that meet the conditions , You can choose any location to insert a new value , After insertion, the whole list remains in order .
If the list is empty ( The given node is null), You need to create a circular sequence table and return this node . otherwise . Please return to the original given node .
source : Power button (LeetCode)
link :https://leetcode.cn/problems/4ueAj6
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .
Output example
Input :head = [3,4,1], insertVal = 2
Output :[3,4,1,2]
Input :head = [], insertVal = 1
Output :[1]
explain : The list is empty. ( The given node is null), Create a circular sequence table and return this node .
Input :head = [1], insertVal = 0
Output :[1,0]
class Solution {
public:
Node* insert(Node* head, int insertVal) {
/* First deal with the empty linked list */
if (!head) {
/* Circular linked list with only one node . Point to your */
head = new Node(insertVal);
head->next = head;
return head;
}
/* Use another pointer to traverse , Because eventually you need to return head*/
Node* cur = head;
/* The cycle condition is used to exclude the case that there is no maximum or minimum value in the linked list : There is only one node . Or the values of all nodes are the same */
while(cur->next!=head){
/* Juxtaposition case 1 : The insertion value is between the size of the previous and subsequent numbers */
if (cur->val <= insertVal && insertVal<=cur->next->val)
break;
/* Juxtaposition II : The insertion value is greater than the maximum value of the linked list ( The second condition proves the existence of the maximum value in the linked list )*/
else if (cur->val <= insertVal && cur->next->val < cur->val)
break;
/* Parallel case 3 : The insertion value is less than the minimum value of the linked list ( The second condition proves the existence of the minimum value in the linked list )*/
else if (cur->next->val >= insertVal && cur->next->val < cur->val)
break;
cur = cur->next;
}
/* Cycle is completed . Insert directly after the current pointer * Don't use local variables for declared nodes . Outside the function, it fails */
cur->next = new Node(insertVal, cur->next);
/* Return the required pointer */
return head;
}
};
边栏推荐
- Get the position of the nth occurrence of the string
- 数据库课程设计:高校教务管理系统(含代码)
- Fashion-Gen: The Generative Fashion Dataset and Challenge 论文解读&数据集介绍
- JS regular expression basic knowledge learning
- ES6语法总结--上篇(基础篇)
- PT OSC deadlock analysis
- Gateway 根据服务名路由失败,报错 Service Unavailable, status=503
- 【ESP32学习-1】Arduino ESP32开发环境搭建
- Redis cache update strategy, cache penetration, avalanche, breakdown problems
- Fashion Gen: the general fashion dataset and challenge paper interpretation & dataset introduction
猜你喜欢

JS regular expression basic knowledge learning

基於Redis的分布式ID生成器

ARM PC=PC+8 最便于理解的阐述

Redis cache update strategy, cache penetration, avalanche, breakdown problems

Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports

js题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

Arduino JSON data information parsing

记一次云服务器被密码爆破的经历——关小黑屋、改密码、改端口

(三)R语言的生物信息学入门——Function, data.frame, 简单DNA读取与分析

E-commerce data analysis -- salary prediction (linear regression)
随机推荐
嵌入式启动流程
Conditional probability
JS變量類型以及常用類型轉換
[Offer18]删除链表的节点
Embedded startup process
[899]有序队列
Learning notes of JS variable scope and function
Single chip Bluetooth wireless burning
. elf . map . list . Hex file
Common DOS commands
RuntimeError: cuDNN error: CUDNN_ STATUS_ NOT_ INITIALIZED
History object
JS variable types and common type conversions
Page performance optimization of video scene
Inline detailed explanation [C language]
基于Redis的分布式锁 以及 超详细的改进思路
Custom view puzzle getcolor r.color The color obtained by colorprimary is incorrect
ESP8266连接onenet(旧版MQTT方式)
Important methods of array and string
CUDA C programming authoritative guide Grossman Chapter 4 global memory