[算法]向有序的环形单链表中插入新节点
2016-03-08 21:02
405 查看
题目:
一个环形单链表从头节点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; }
相关文章推荐
- EVC编程点滴-WM_TIMER冲突处理与精度
- 部署DBA常规作业
- 【BZOJ4260】Codechef REBXOR
- 毕业设计第二十一天
- 【LeetCode】169. Majority Element
- strcpy()的使用
- 转载:浅析C#深拷贝与浅拷贝
- EVC编程点滴四 - 钩子
- Django请求响应对象
- matlab之列主元素高斯消去法
- windows下 pip的更新升级
- HDU 5637 Transform
- android.support.v4.app.SuperNotCalledException
- leetcode:Ugly Number II 【Java】
- Linux内核中的字符串处理函数
- 20145206第0周学习资源阅读心得
- 第二次作业
- code vs 蚯蚓的游戏问题
- Flask 框架学习(一)
- 对两个整数变量的值互换的三种方法