[演算法]向有序的環形單連結串列中插入新節點

林堯彬發表於2020-04-04

題目:

一個環形單連結串列從頭節點head開始不降序,同時由最後的節點指回頭節點。給定這樣一個環形單連結串列的頭節點head和整數num,請生成節點值為num的新節點,並插入到這個環形連結串列中,保證調整後的連結串列依然有序。

要求時間複雜度為O(N),額外空間複雜度為O(1)。

分析:

本題不算是很難,但是要注意最後返回頭節點時要考慮到不同的情況。

有可能要插入的節點的值比頭節點的值還小,此時返回的是要插入的節點,否則返回頭節點。

程式:

public static Node insertNum(Node head,int num){
        Node node=new Node(num);
        if (head==null) {
            node.next=node;
            return node;
        }
        Node pre=head;
        Node cur=head.next;
        while(cur!=head){
            if (pre.value<=num&&cur.value>=num) {
                break;
            }else{
                pre=cur;
                cur=cur.next;
            }
        }
        pre.next=node;
        node.next=cur;
        return head.value<=num?head:node;
            }

轉載於:https://www.cnblogs.com/xiaomoxian/p/5255613.html

相關文章