程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> LeetCode 86 Partition List

LeetCode 86 Partition List

編輯:關於C++

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.

 

題目要求對鏈表分段,所有小於X的元素都排在大於等於X的前面。

代碼如下:

 

class Solution {
public:
    ListNode* partition(ListNode* head, int x) {
        if (head == NULL)
			return head;
		ListNode tmpHead(0);
		tmpHead.next = head;
		ListNode *p = &tmpHead;
		ListNode *q = p->next;
		while(q && q->valnext;
			q = p->next;
		}

		while (q != NULL)
		{
			ListNode * tmpNode = q->next;
			if(tmpNode == NULL)
			    break;
			if (tmpNode->val < x)
			{
				q->next = tmpNode->next;
				tmpNode->next = p->next;
				p->next = tmpNode;
				p = p->next;
			}else{
			    q = q->next;
			}
		}


		return tmpHead.next;
    }
};


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved