LeetCode: Partition List

一次过,链表题无难度

 1 /**

 2  * Definition for singly-linked list.

 3  * struct ListNode {

 4  *     int val;

 5  *     ListNode *next;

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

 7  * };

 8  */

 9 class Solution {

10 public:

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

12         // Start typing your C/C++ solution below

13         // DO NOT write int main() function

14         ListNode *less, *larger, *p, *q, *ret;

15         less = larger = p = q = ret = NULL;

16         while (head) {

17             if (head->val < x) {

18                 if (!less) {

19                     less = new ListNode(head->val);

20                     p = less;

21                 }

22                 else {

23                     p->next = new ListNode(head->val);

24                     p = p->next;

25                 }

26             }

27             else {

28                 if (!larger) {

29                     larger = new ListNode(head->val);

30                     q = larger;

31                 }

32                 else {

33                     q->next = new ListNode(head->val);

34                     q = q->next;

35                 }

36             }

37             head = head->next;

38         }

39         if (!less) ret = larger;

40         if (!larger) ret = less;

41         if (less && larger) {

42             p->next = larger;

43             ret = less;

44         }

45         return ret;

46     }

47 };

 C#

 1 /**

 2  * Definition for singly-linked list.

 3  * public class ListNode {

 4  *     public int val;

 5  *     public ListNode next;

 6  *     public ListNode(int x) { val = x; }

 7  * }

 8  */

 9 public class Solution {

10     public ListNode Partition(ListNode head, int x) {

11         ListNode less = null, larger = null, p = null, q = null, ans = null;

12         while (head != null) {

13             if (head.val < x) {

14                 if (less == null) {

15                     less = new ListNode(head.val);

16                     p = less;

17                 }

18                 else {

19                     p.next = new ListNode(head.val);

20                     p = p.next;

21                 }

22             }

23             else {

24                 if (larger == null) {

25                     larger = new ListNode(head.val);

26                     q = larger;

27                 }

28                 else {

29                     q.next = new ListNode(head.val);

30                     q = q.next;

31                 }

32             }

33             head = head.next;

34         }

35         if (less == null) ans = larger;

36         if (larger == null) ans = less;

37         if (less != null && larger != null) {

38             p.next = larger;

39             ans = less;

40         }

41         return ans;

42     }

43 }
View Code

 

你可能感兴趣的:(partition)