题目:一个环形单链表从头节点head开始不降序,同时由最后的节点指回头节点。给定这样一个环形单链表的头节点head和一个整数num,请生成节点值为num的新节点,并插入到这个环形链表中,保证调整后的链表依然有序。
1)准备一个pre = head。一个cur = head.next 指针。如果遇见pre < num && num < cur 。就插入中间就是。如果没有遇见,就说明是插入到最后的。要么num是最大的要么num是最小的。时间复杂度为O(N),空间O(1)。
public static class Node{
public int value;
public Node next;
public Node(int num){
this.value = num;
}
}
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 < node.value && node.value < cur.value){
break;
}
pre = pre.next;
cur = cur.next;
}
pre.next = node;
node.next = cur;
return head.value > num ? node:head;
}