当前位置:网站首页>[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;
}
};
边栏推荐
- [Offer18]删除链表的节点
- 1081 rational sum (20 points) points add up to total points
- Stm32f1+bc20+mqtt+freertos system is connected to Alibaba cloud to transmit temperature and humidity and control LED lights
- Conditional probability
- Dead loop in FreeRTOS task function
- Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports
- JS变量类型以及常用类型转换
- Feature of sklearn_ extraction. text. CountVectorizer / TfidVectorizer
- MySQL takes up too much memory solution
- [Nodejs] 20. Koa2 onion ring model ----- code demonstration
猜你喜欢

E-commerce data analysis -- salary prediction (linear regression)

Amba, ahb, APB, Axi Understanding
![Detailed explanation of Union [C language]](/img/d2/99f288b1705a3d072387cd2dde827c.jpg)
Detailed explanation of Union [C language]

数据库课程设计:高校教务管理系统(含代码)

Time slice polling scheduling of RT thread threads

Esp8266 uses Arduino to connect Alibaba cloud Internet of things

(一)R语言入门指南——数据分析的第一步

2021.11.10汇编考试

Générateur d'identification distribué basé sur redis

基于Redis的分布式ID生成器
随机推荐
Mp3mini playback module Arduino < dfrobotdfplayermini H> function explanation
Important methods of array and string
程序设计大作业:教务管理系统(C语言)
Pytoch temperature prediction
VIM command line notes
Pytorch four commonly used optimizer tests
C language, log print file name, function name, line number, date and time
RT thread API reference manual
Conditional probability
Redis based distributed locks and ultra detailed improvement ideas
JS變量類型以及常用類型轉換
RuntimeError: cuDNN error: CUDNN_ STATUS_ NOT_ INITIALIZED
Common properties of location
[leetcode622]设计循环队列
HCIP Day 12
Talking about the startup of Oracle Database
gcc 编译选项
MySQL时间、时区、自动填充0的问题
CUDA C programming authoritative guide Grossman Chapter 4 global memory
Classification, understanding and application of common methods of JS array