Problem
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.
Example:
Input: head = 1->4->3->2->5->2, x = 3
Output: 1->2->2->4->3->5
class Solution { public ListNode partition(ListNode head, int x) { ListNode dummy1 = new ListNode(0); ListNode dummy2 = new ListNode(0); ListNode small = dummy1, large = dummy2; while (head != null) { if (head.val < x) { small.next = head; small = small.next; } else { large.next = head; large = large.next; } head = head.next; } small.next = dummy2.next; large.next = null; return dummy1.next; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72529.html
摘要:當(dāng)前節(jié)點的前一個節(jié)點插入位置的前一個節(jié)點,以及記錄初始位置的節(jié)點。當(dāng)發(fā)現(xiàn)一個需要交換的節(jié)點時,先獲得這個節(jié)點,然后將指向節(jié)點的后一個節(jié)點。最后將兩個鏈表連接。代碼相比于第一種更加清晰一些。 題目要求 Given a linked list and a value x, partition it such that all nodes less than x come before no...
Problem A string S of lowercase letters is given. We want to partition this string into as many parts as possible so that each letter appears in at most one part, and return a list of integers represe...
摘要:新建兩個鏈表,分別存和的結(jié)點。令頭結(jié)點分別叫作和,對應(yīng)的指針分別叫作和。然后遍歷,當(dāng)小于的時候放入,否則放入。最后,讓較小值鏈表尾結(jié)點指向較大值鏈表頭結(jié)點,再讓較大值鏈表尾結(jié)點指向。 Problem Given a linked list and a value x, partition it such that all nodes less than x come before no...
摘要:深度優(yōu)先搜素復(fù)雜度時間空間思路因為我們要返回所有可能的分割組合,我們必須要檢查所有的可能性,一般來說這就要使用,由于要返回路徑,仍然是典型的做法遞歸時加入一個臨時列表,先加入元素,搜索完再去掉該元素。 Palindrome Partitioning Given a string s, partition s such that every substring of the parti...
閱讀 3474·2023-04-25 18:52
閱讀 2486·2021-11-22 15:31
閱讀 1225·2021-10-22 09:54
閱讀 3014·2021-09-29 09:42
閱讀 608·2021-09-26 09:55
閱讀 914·2021-09-13 10:28
閱讀 1106·2019-08-30 15:56
閱讀 2111·2019-08-30 15:55