• Leetcode:Partition List


    Description:

    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.

    分析:这道题目就是将链表中小于目标值的元素移到前面,链表中所有元素的相对位置都应该保持不变,其实就是一些

    最基本的链表操作,但是这里有一个小trick, 因为每次都要往前看一个元素,以确定操作,所以在链表前面增加一个额外元素,

    将所有的操作在循环内就搞定了!

     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         if(head == NULL) return head;
    13         
    14         ListNode *newh = new ListNode(0);
    15         newh->next = head;
    16         
    17         ListNode *pass= newh, *insertpos=newh, *findnod;
    18         while(pass->next!=NULL)
    19         {
    20             if(pass->next->val>=x)
    21                 pass = pass->next;
    22             else if(insertpos->next == pass->next)
    23                  {
    24                      pass = pass->next;
    25                      insertpos = insertpos->next;
    26                  }
    27                  else{
    28                      findnod = pass->next;
    29                      pass->next = findnod->next;
    30                      //pass = pass->next;
    31                      
    32                      findnod->next = insertpos->next;
    33                      insertpos->next = findnod;
    34                      insertpos = insertpos->next;
    35                  }
    36         }
    37         
    38         return newh->next;
    39     }
    40 };
     
  • 相关阅读:
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
  • 原文地址:https://www.cnblogs.com/soyscut/p/3787584.html
Copyright © 2020-2023  润新知