当前位置:网站首页>[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;
}
};
边栏推荐
- Cannot change version of project facet Dynamic Web Module to 2.3.
- (1) Introduction Guide to R language - the first step of data analysis
- ESP学习问题记录
- AMBA、AHB、APB、AXI的理解
- 2021.11.10汇编考试
- MySQL占用内存过大解决方案
- 單片機藍牙無線燒錄
- Whistle+switchyomega configure web proxy
- ES6 grammar summary -- Part I (basic)
- Arduino JSON data information parsing
猜你喜欢
Basic operations of databases and tables ----- modifying data tables
Common properties of location
JS變量類型以及常用類型轉換
【ESP32学习-2】esp32地址映射
Redis 缓存更新策略,缓存穿透、雪崩、击穿问题
Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports
js 变量作用域和函数的学习笔记
RT thread API reference manual
ES6语法总结--下篇(进阶篇 ES6~ES11)
Kaggle competition two Sigma connect: rental listing inquiries (xgboost)
随机推荐
Postman 中级使用教程【环境变量、测试脚本、断言、接口文档等】
Priority inversion and deadlock
Pytorch: tensor operation (I) contiguous
gcc 编译选项
@Autowired 和 @Resource 的区别
基於Redis的分布式ID生成器
Embedded startup process
MySQL takes up too much memory solution
History object
Redis based distributed locks and ultra detailed improvement ideas
基于Redis的分布式ID生成器
js 变量作用域和函数的学习笔记
STM32 how to locate the code segment that causes hard fault
The dolphin scheduler remotely executes shell scripts through the expect command
A possible cause and solution of "stuck" main thread of RT thread
JS 函数提升和var变量的声明提升
Pytorch four commonly used optimizer tests
列表的使用
1081 rational sum (20 points) points add up to total points
Navigator object (determine browser type)