【Leetcodeブラシ問題編】(十七)チェーンテーブルを区切る


/**
 * 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) {
          ListNode* smallHead = new ListNode(-1);
          ListNode* smallCur = smallHead;
          ListNode* bigHead = new ListNode(-1);
          ListNode* bigCur = bigHead;
          ListNode* curNode = head;
          while(curNode != NULL){
              if(curNode->val < x){
                  smallCur ->next = new ListNode(curNode->val);
                  smallCur = smallCur->next;
              }
              else{
                  bigCur->next = new ListNode(curNode->val);
                  bigCur=bigCur->next;
              }
              curNode = curNode->next;
          }
          smallCur->next = bigHead->next;
          return smallHead->next;
    }
};

 
要点:1新規のヘッダノードは、ブートとしてのみ使用され、最後にドッキングする際に使用されますが、実際の値はありません.最後の戻り値は、新規のヘッダノードの次からです
2 ListNodeはすべてポインタ形式を採用しているので、演算子は->
3ノードを追加するには、new演算子を使用する必要があります:List Node*bigHead=new ListNode(-1);