有一个整数val,如何在节点值有序的环形链表中插入一个节点值为val的节点,并且保证这个环形单链表依然有序。
给定链表的信息,及元素的值A及对应的nxt指向的元素编号同时给定val,请构造出这个环形链表,并插入该值。
测试样例:
[1,3,4,5,7],[1,2,3,4,0],2
返回:{1,2,3,4,5,7}
package lianbiao;
public class huanxinglianbiao {
public static void main(String[] args) {
int[] A=new int[]{4,8,9};
int[] nxt=new int[]{1,2,0};
int val=3;
ListNode a= huanxinglianbiao.insert(A, nxt, val);
while(a!=null){
System.out.println(a.val);
a=a.next;
}
}
public static class ListNode{
int val;
ListNode next=null;
ListNode(int val) {
this.val=val;
}
}
public static ListNode insert(int[] A, int[] nxt, int val) {
// write code here
if(A== null || A.length == 0){
ListNode t= new ListNode(val);
return t;
}
ListNode head = new ListNode(A[0]);
ListNode r=head;
ListNode p;
for(int i=0;i<nxt.length-1;i++)
{
p=new ListNode(A[nxt[i]]);
r.next=p;
r=p;
}
ListNode pos = head;
ListNode pas = head.next;
while(pas!=null){
if(val >=pos.val&&val<= pas.val)
break;
pos =pas;
pas = pas.next;
}
if(val<head.val){//这里判断的原因是判断val小于所有值
ListNode t= new ListNode(val);
t.next=head;
return t;
}
ListNode t= new ListNode(val);
t.next =pas;
pos.next=t;
if(val<head.val)//这里的判断只是前提是val>=最小值
return t;
else
return head;
}
}