LintCode-链表划分
来源:互联网 发布:淘宝客服回复 编辑:程序博客网 时间:2024/05/24 00:52
容易 链表划分 查看运行结果
29% 通过
给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。
你应该保留两部分内链表节点原有的相对顺序。
您在真实的面试中是否遇到过这个题? Yes
样例
给定链表 1->4->3->2->5->2->null,并且 x=3
返回 1->2->2->4->3->5->null
这里对题目理解有点问题:
案例一:输入1->4->3->2->5->2->null, 3输出1->4->2->2->3->5->null期望答案1->2->2->4->3->5->null案列二输入1->2->0->3->1->2->1->0->2->2->2->1->0->2->null, 2输出0->0->0->1->1->1->1->2->3->2->2->2->2->2->null期望答案1->0->1->1->0->1->0->2->3->2->2->2->2->2->null////不理解他划分好到底需不需要排序,能正确理解的朋友请留言指教。/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val; * this.next = null; * } * } */ public class Solution { /** * @param head: The first node of linked list. * @param x: an integer * @return: a ListNode */ public ListNode partition(ListNode head, int x) { if(head == null){ return null; } ArrayList<Integer> a = new ArrayList<Integer>(); ArrayList<Integer> b = new ArrayList<Integer>(); boolean find =false; while(head != null){ if(head.val == x && !find){ find =true; head = head.next; continue; }else{ if(find){ if(head.val < x){ a.add(head.val); }else{ b.add(head.val); } }else{ a.add(head.val); } head = head.next; } } ListNode re = new ListNode(0); ListNode ree = re; for(int n : a){ re.next = new ListNode(n); re = re.next; } //// insertionSortList(ree); if(find){ re.next = new ListNode(x); re = re.next; } for(int n : b){ re.next = new ListNode(n); re = re.next; } return ree.next; } public static ListNode insertionSortList(ListNode head) { boolean flag = true; ListNode frist = head; ListNode second = head; if(head == null || head.next == null){ return head; }else{ frist = head.next; } while(flag){ flag = false; do{ if(frist.val<second.val){ int x =frist.val; frist.val = second.val; second.val = x; flag = true; } frist = frist.next; second = second.next; }while(frist != null); frist = head.next; second = head; } return head; }}
0 0
- LintCode-链表划分
- LintCode:链表划分
- Lintcode 链表划分
- LintCode 链表划分
- 链表划分-LintCode
- LintCode : 链表划分
- 链表划分-LintCode
- LintCode 96. 链表划分
- lintcode 96 链表划分
- [LintCode]96.链表划分
- LintCode Partition List 链表划分
- lintcode——链表划分
- [LintCode 96] 链表划分(Python)
- lintcode&九章算法——Lintcode No.96. 链表划分 ? 待解决
- LintCode-数组划分
- LintCode 数组划分
- LintCode:数组划分
- LintCode 数组划分
- 内部类使用方法
- jquery进度条
- apn查询网站
- Linux学习笔记之<win8.1和centos双系统安装>
- java中的数据精度计算问题
- LintCode-链表划分
- SSL延迟计算:为什么HTTPs比HTTP要慢?
- 关于maven的几个常用插件
- maven(4)将项目发布到私服
- 防止人为误操作MySQL数据库技巧
- javaWEB中前后台中文乱码问题解决方法
- 数据说:互联网行业哪个职位比较有前途?
- 限制文本框中只能输入数字
- Android------- The connection to adb is down, and a severe error has occured.