当前位置:网站首页>[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;
}
};
边栏推荐
- 1081 rational sum (20 points) points add up to total points
- E-commerce data analysis -- salary prediction (linear regression)
- 关于Gateway中使用@Controller的问题
- Arduino JSON data information parsing
- NRF24L01 troubleshooting
- ES6 grammar summary -- Part I (basic)
- Vscode basic configuration
- How to add music playback function to Arduino project
- (3) Introduction to bioinformatics of R language - function, data Frame, simple DNA reading and analysis
- AMBA、AHB、APB、AXI的理解
猜你喜欢
Programmers can make mistakes. Basic pointers and arrays of C language
CUDA C programming authoritative guide Grossman Chapter 4 global memory
ORA-02030: can only select from fixed tables/views
JS正则表达式基础知识学习
Stm32f1+bc20+mqtt+freertos system is connected to Alibaba cloud to transmit temperature and humidity and control LED lights
Arm pc=pc+8 is the most understandable explanation
Gravure sans fil Bluetooth sur micro - ordinateur à puce unique
Pytorch four commonly used optimizer tests
level16
Single chip Bluetooth wireless burning
随机推荐
2021.11.10汇编考试
ARM PC=PC+8 最便于理解的阐述
How to add music playback function to Arduino project
JS 函数提升和var变量的声明提升
[golang] leetcode intermediate - fill in the next right node pointer of each node & the k-smallest element in the binary search tree
[899]有序队列
E-commerce data analysis -- salary prediction (linear regression)
Générateur d'identification distribué basé sur redis
Flink late data processing (3)
gcc 编译选项
open-mmlab labelImg mmdetection
Whistle+switchyomega configure web proxy
Fashion Gen: the general fashion dataset and challenge paper interpretation & dataset introduction
NRF24L01 troubleshooting
Esp8266 connect onenet (old mqtt mode)
Detailed explanation of Union [C language]
Single chip Bluetooth wireless burning
Vulnhub target: hacknos_ PLAYER V1.1
.elf .map .list .hex文件
VIM command line notes