[LeetCode] [Partition List 2012-04-30]

Given a linked list and a value x, partition it such that all nodes
less than x come before nodes greater than or equal to x.

You should preserve the original relative order of the nodes in each of the
two partitions.

For example, Given 1->4->3->2->5->2 and
x = 3, return 1->2->2->4->3->5.

the key point of this problem is "DO
NOT FORGET TO SET NULL".

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

/**

 * Definition for singly-linked list.

 * struct ListNode {

 *     int val;

 *     ListNode *next;

 *     ListNode(int x) : val(x), next(NULL) {}

 * };

 */

class
Solution {

public:

    ListNode *partition(ListNode *head, int
x) {

        if(head == NULL)    return
NULL;

        

        bool
bBig=false;

        bool
bSmall=false;

        ListNode *p=head;

        

        ListNode * pBig = NULL;

        ListNode * pSmall = NULL;

        ListNode *pHead = NULL;

        ListNode *pHead2 = NULL;

        while(p!=NULL)

        {

            int
v = p->val;

            if(v >= x)

            {

                if(pBig==NULL)

                {

                    pBig = p;

                    pHead2 = p;

                }

                else

                {

                    pBig->next=p;

                    pBig = pBig->next;

                }

            }

            if(v < x)

            {

                if(pSmall==NULL)

                {

                    pSmall = p;

                    pHead = p;

                }

                else

                {

                    pSmall->next=p;

                    pSmall = pSmall->next;

                }

            }

            p=p->next;

        }

        !!!!!!!!//this is really import, or there will be a circle in linklist!!!!!!!!!!

        if(pSmall != NULL)

        {

            pSmall->next = NULL;

        }

        if(pBig != NULL)

        {

            pBig->next = NULL;

        }

        

        if(pHead != NULL)

        {

            pSmall->next = pHead2;

        }

        else

        {

            pHead = pHead2;

        }

        return
pHead;

    }

};

[LeetCode] [Partition List 2012-04-30]

时间: 2024-08-26 18:38:18

[LeetCode] [Partition List 2012-04-30]的相关文章

Leetcode:Partition List 链表快速排序划分

Partition List Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of the two partitions. For example,Given

LeetCode: Partition List [086]

[题目] Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of the two partitions. For example, Given 1->4->3

移植u-boot.2012.04.01_2

/*************************************************** *u-boot版本:u-boot2012.04.01 *gcc版本:arm-linux-gcc-4.3.2 *服务器:ubuntu12.04 ***************************************************/ 一.建立单板 在board/复制smdk2410文件夹为smdk2440文件夹 在include/configs/将smdk2410.h - >s

Cheatsheet: 2014 04.01 ~ 04.30

Java 115 Java Interview Questions and Answers – The ULTIMATE List 3 Good Reasons to Avoid Arrays in Java Interfaces Other Top 10 Algorithms for Coding Interview My Favourite Open Source Software Why I went from Python to Go (and not node.js) 6 Reason

[LeetCode]Partition List

题目描述:(链接) Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of the two partitions. For example,Given 1->4

LeetCode: Partition List 解题报告

Partition List Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of the two partitions. For example,Given

LeetCode: Partition List解题报告

Partition List Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of the two partitions. For example, Give

[LeetCode] Partition Equal Subset Sum 相同子集和分割

Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal. Note: Both the array size and each of the array element will not exceed 100. Exam

[LeetCode] Partition List 划分链表

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of the two partitions. For example,Given 1->4->3->2