LeetCode 剑指Offer II 029.排序的循环链表[链表 双指针] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 剑指Offer II 029.排序的循环链表[链表 双指针] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。



解题思路:
一道有关链表的中等题,其实就是分情况讨论的模拟题,首先考虑序列为空和1个的情况,直接插入node即可,超过1的长度就需要循环遍历,又要考虑两种情况,插入的node是在序列中还是在循环交界处,即最大值和最小值的中间(也即node是最大值或者最小值),代码如下:

/*
// 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) 
        Node *node = new Node(insertVal);
        // 序列中无元素
        if(head == nullptr) 
            node->next = node;
            return node;
        
        // 序列中只有一个元素
        if(head->next == nullptr) 
            head->next = node;
            node->next = head;
            return head;
        
        Node *cur = head, *next = head->next;
        while(next != head) 
            // node在序列中
            if(insertVal >= cur->val && insertVal <= next->val) 
                break;
            
            // 到达循环交界处
            if(cur->val > next->val) 
                // 如果node在交界处
                if(insertVal > cur->val || insertVal < next->val) 
                    break;
                
            
            cur = next;
            next = next->next;
        
        cur->next = node;
        node->next = next;
        return head;
    
;

以上是关于LeetCode 剑指Offer II 029.排序的循环链表[链表 双指针] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

Java每日一题——>剑指 Offer II 029. 排序的循环链表

Java每日一题——>剑指 Offer II 029. 排序的循环链表

LeetCode 剑指 Offer II 091.粉刷房子 - 原地修改

剑指 Offer II 091. 粉刷房子

剑指 Offer II 091. 粉刷房子

[LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II