LeetCode Partition List
2015-09-01 04:28
387 查看
原题链接在这里:https://leetcode.com/problems/partition-list/
思路: 从头到尾每当发现大于等于x的点,就删掉加在list尾部。
Note: 1. 建立一个dummy head放在链表头用来处理原有head.val大于等于x的边界情况。
2.用一个mark标注原有的tail,while loop 的条件是iter.next != mark 而不是 iter.next != null,因为一直往后加,是不会出来
null的,会陷入infinite loop.
3. 最要要注意mark本身还没有被检查过,所以要检查mark本身。
AC Java:
思路: 从头到尾每当发现大于等于x的点,就删掉加在list尾部。
Note: 1. 建立一个dummy head放在链表头用来处理原有head.val大于等于x的边界情况。
2.用一个mark标注原有的tail,while loop 的条件是iter.next != mark 而不是 iter.next != null,因为一直往后加,是不会出来
null的,会陷入infinite loop.
3. 最要要注意mark本身还没有被检查过,所以要检查mark本身。
AC Java:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode partition(ListNode head, int x) { if(head == null || head.next == null){ return head; } ListNode dunmy = new ListNode(0); dunmy.next = head; ListNode iter = dunmy; ListNode tail = head; while(tail.next != null){ tail = tail.next; } ListNode mark = tail; while(iter.next != mark){ if(iter.next.val >= x){ ListNode temp = new ListNode(iter.next.val); tail.next = temp; tail = tail.next; iter.next = iter.next.next; }else{ iter = iter.next; } } if(iter.next.val >= x){ ListNode temp = new ListNode(iter.next.val); tail.next = temp; tail = tail.next; iter.next = iter.next.next; } return dunmy.next; } }
相关文章推荐
- LeetCode Partition List
- [LeetCode#263]Factorial Trailing Zeroes
- 做软件不要忘了做荷兰文
- Oracle+Ado.Net(四)
- 卷积神经网络小结(Convolutional Neural Networks)
- LeetCode Linked List Cycle II
- LeetCode Linked List Cycle II
- 深度卷积神经网络CNNs的多GPU并行框架及其应用
- cuDNN:利用 GPU 加速卷积神经网络
- Javascript 学习
- Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验
- 梦想、执着
- Emacs使用(一)
- iGriamceV8.0 IG8.0.0 iOS8 V8基本设置和使用教程图
- JavaScript-DOM学习笔记之动态创建标记
- [LeetCode#204]Factorial Trailing Zeroes
- iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值
- 说说LINUX程序内存管理那些事
- mac下运行QWT的example程序
- 计算机这个行当--拥抱时代,拥抱变革