• 86. Partition List


    86. 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.
    
    
    

    解析

    • 思路:新建两个节点preHead1与preHead2,分别为指向两个链表的头结点。把节点值小于x的节点链接到链表1上,节点值大等于x的节点链接到链表2上。最后把两个链表相连即可
    • right.next=null;//这句很重要!链表最后一个元素如果小于x的话,那么right.next不为null; 自己的没有想到,画个简单的示意图就知道,为甚末要置NULL,后面就绕开了这个问题,分离每一个节点
    // 86. Partition List
    class Solution_86 {
    public:
    	ListNode* partition(ListNode* head, int x) {
    
    		if (!head||!head->next)
    		{
    			return head;
    		}
    	
    		ListNode*cur = head;
    		ListNode*left = new ListNode(0);
    		ListNode*p = left;
    		ListNode*right = new ListNode(0);
    		ListNode*q = right;
    		while (cur)
    		{
    			ListNode* temp = cur;	
    			cur = cur->next;
    			temp->next = NULL;
    
    			if (temp->val<x)
    			{
    				left->next = temp;
    				left = left->next;
    			}
    			else
    			{
    				right->next = temp;
    				right = right->next;
    			}
    		}
    
    		left->next = q->next;
    		return p->next;
    	}
    };
    
    

    题目来源

  • 相关阅读:
    python中filter(),map()和reduce()的用法及区别
    Python中的单例模式的几种实现方式的及优化
    python标准库和第三方库的区别
    django和flask的区别
    wtforms
    protobuf学习
    人物FSM
    策略模式
    虚函数调用机制
    虚析构函数
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/8782797.html
Copyright © 2020-2023  润新知