zoukankan      html  css  js  c++  java
  • 【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->5->2 and x = 3,
    return 1->2->2->4->3->5.


    /**
     * 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 = NULL;
    	ListNode *bighead = NULL;
    	ListNode *tail_small = NULL;
    	ListNode *tail_big = NULL;
    	ListNode *cur = head;
    	if (head == NULL || head->next == NULL)
    	{
    		return head;
    	}
    	while(cur != NULL)
    	{
    		ListNode *tmp_next = cur->next;
    		if (cur->val < x)
    		{
    			if (smallhead == NULL)
    			{
    				smallhead = tail_small = cur;
    			}
    			else {
    				tail_small->next = cur;
    				tail_small = cur;
    			}
    		}
    		else{
    			if (bighead == NULL)
    			{
    				bighead = tail_big = cur;
    			}
    			else{
    				tail_big->next = cur;
    				tail_big = cur;
    			}
    		}
    		cur = tmp_next;
    	}
    	if (tail_small == NULL)
    	{
    		tail_big->next = NULL;
    		return bighead;
    	}
    	if (tail_big == NULL)
    	{
    		tail_small->next = NULL;
    		return smallhead;
    	}
    	tail_small->next = bighead;
    	tail_big->next = NULL;
    	return smallhead;
        }
    };


  • 相关阅读:
    sublime中node测试环境
    常用的win dos命令
    html area图片热点
    Git常用指令整理(Git Cheat Sheet)
    Java研发技术学习路线
    编程+工具基础教程|网站整理
    廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结
    现成的HTML5框架
    记录下自己学习的点滴-开始写博客
    linux查看日志文件
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5166633.html
Copyright © 2011-2022 走看看