日月的弯刀  
Where Amazing Happens!

转载请标明出处http://www.cnblogs.com/haozhengfei/p/7d1e11e072026eae6127c32d5490b214.html 


环形链表插值练习


环形链表练习

第2节 环形链表插值练习题

 

有一个整数val,如何在节点值有序的环形链表中插入一个节点值为val的节点,并且保证这个环形单链表依然有序。

给定链表的信息,及元素的值A及对应的nxt指向的元素编号同时给定val,请构造出这个环形链表,并插入该值。

测试样例:
[1,3,4,5,7],[1,2,3,4,0],2
返回:{1,2,3,4,5,7}
 
 
1
import java.util.*;
2

3
/*
4
public class ListNode {
5
    int val;
6
    ListNode next = null;
7

8
    ListNode(int val) {
9
        this.val = val;
10
    }
11
}*/
12
public class InsertValue {
13
    public ListNode insert(int[] A, int[] nxt, int val) {
14
        // write code here
15
        ListNode node = new ListNode(val);
16
        if(A==null||A.length<=0){
17
          //  node.next=node;
18
            return node;
19
        }
20
        ListNode head=new ListNode(A[0]);
21
        ListNode tmp=head;
22
        for(int i=0;i<A.length-1;i++){
23
            ListNode newNode=  new ListNode(A[nxt[i]]);
24
                tmp.next=newNode;
25
                tmp=newNode;
26
        }
27
       // tmp.next=head;
28
        if(val<head.val){
29
            tmp.next=node;
30
            node.next=head;
31
            return node;
32
        }
33

34
        ListNode pre=head;
35
        ListNode cur=pre.next;
36
        while(cur!=null){
37
            if(pre.val<=val&&val<=cur.val)
38
                break;
39
            pre=cur;
40
            cur=cur.next;
41
        }
42
        node.next=cur;
43
        pre.next=node;
44
        if(val<head.val)
45
            return node;
46
        return head;
47
        }
48
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
posted on 2017-03-20 21:09  日月的弯刀  阅读(889)  评论(1编辑  收藏  举报