725. 分隔鏈表

725. 分隔鏈表

給你一個頭結點為 head 的單鏈表和一個整數 k ,請你設計一個算法將鏈表分隔為 k 個連續的部分。

每部分的長度應該盡可能的相等:任意兩部分的長度差距不能超過 1 。這可能會導致有些部分為 null 。

這 k 個部分應該按照在鏈表中出現的順序排列,并且排在前面的部分的長度應該大于或等于排在后面的長度。

返回一個由上述 k 部分組成的數組。

示例 1:
在這里插入圖片描述

輸入:head = [1,2,3], k = 5
輸出:[[1],[2],[3],[],[]]
解釋:
第一個元素 output[0] 為 output[0].val = 1 ,output[0].next = null 。
最后一個元素 output[4] 為 null ,但它作為 ListNode 的字符串表示是 [] 。
示例 2:

在這里插入圖片描述

輸入:head = [1,2,3,4,5,6,7,8,9,10], k = 3
輸出:[[1,2,3,4],[5,6,7],[8,9,10]]
解釋:
輸入被分成了幾個連續的部分,并且每部分的長度相差不超過 1 。前面部分的長度大于等于后面部分的長度。

提示:

  • 鏈表中節點的數目在范圍 [0, 1000]
  • 0 <= Node.val <= 1000
  • 1 <= k <= 50

image.png

解題思路

統計出節點的個數,將節點分為k份,首先使用總數/k得出每一個子鏈表至少需要多少個節點,然后再計算出多出來的節點個數gap,將這些節點均攤到前gap個子鏈表,每個子鏈表增加一個節點

代碼

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode[] splitListToParts(ListNode head, int k) {int cnt=0;ListNode cntHead=head;while(cntHead!=null){cntHead=cntHead.next;cnt++;}int d=cnt/k,gap=cnt-d*k,idx=0;ListNode[] res=new ListNode[k];while(head!=null){ListNode nh=head;res[idx++]=nh;int num=d;if(gap>0){num++;gap--;}while(nh!=null&&num>1){nh=nh.next;num--;   }if(nh==null) return res;head=nh.next;nh.next=null;}return res;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390050.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390050.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390050.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LAMP介紹-MySQL安裝

2019獨角獸企業重金招聘Python工程師標準>>> LAMP: linux-apache-mysql-php &#xff08;安裝方式有&#xff1a;rpm&#xff0c;源碼&#xff0c;二進制免編譯&#xff09; linux-操作系統 apache-web服務軟件&#xff08;httpd&#xff09; mysql-存儲數據庫 php…

總結verilog產生隨機數的$random和seed

$random(seed)是verilog中最簡單的產生隨機數的系統函數。 在調用系統函數$random(seed)時&#xff0c;可以寫成三種樣式&#xff1a;1&#xff09;$random&#xff0c;2&#xff09;$random()&#xff0c;3&#xff09;$random(seed)。下面分別說明&#xff1a; 1&#xff09;…

326. 3的冪

326. 3的冪 給定一個整數&#xff0c;寫一個函數來判斷它是否是 3 的冪次方。如果是&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 整數 n 是 3 的冪次方需滿足&#xff1a;存在整數 x 使得 n 3x 示例 1&#xff1a;輸入&#xff1a;n 27 輸出&#x…

Lottie 站在巨人的肩膀上實現 Android 酷炫動畫效果

說到動畫效果&#xff0c;一般都會感到很高端&#xff0c;感覺很酷炫&#xff1b;而小菜技術有限&#xff0c;稍復雜的動畫效果也需要很多時間處理&#xff0c;但是遇到時間緊任務重的情況該怎么辦呢&#xff1f;那就嘗試一下 Lottie 吧&#xff0c;酷炫的動畫集成卻相當簡單&a…

正則表達式(讀書過程所記未整理)

\d 表示一位數字字符 \d{3} 表示3個數字字符 匹配電話比如400-400-1118 import re phone_number re.compile(r\d{3}-\d{3}-\d{4}) mo phone_number.search(rfor a number is 400-400-4000) print(mo.group()) ************************************************************…

java1

不知道為啥粘貼的圖片是一堆編碼。。。。 如何插入圖片 博客后后臺MarkDown編輯器上只有一個按鈕&#xff0c;就是用來上傳圖片并自動插入MarkDown標記的&#xff0c;超級好用 &#xff08;一&#xff09;學習總結 1.在java中通過Scanner類完成控制臺的輸入&#xff0c;查閱JDK…

430. 扁平化多級雙向鏈表

430. 扁平化多級雙向鏈表 多級雙向鏈表中&#xff0c;除了指向下一個節點和前一個節點指針之外&#xff0c;它還有一個子鏈表指針&#xff0c;可能指向單獨的雙向鏈表。這些子列表也可能會有一個或多個自己的子項&#xff0c;依此類推&#xff0c;生成多級數據結構&#xff0c…

PHPstudy搭建本地環境的網頁加載速度慢的解決方案

PHP5.3以上&#xff0c;如果數據庫鏈接地址是localhost&#xff0c;會自動檢測最終的地址是IPV4還是IPV6&#xff0c;所以會比較慢。解決辦法&#xff1a;修改數據庫的鏈接地址&#xff0c;將localhost改為127.0.0.1即可。 原文鏈接&#xff1a;https://chasjd.com/posts/fb433…

標記偏見_分析師的偏見

標記偏見“Beware of the HiPPO in the room” — The risks and dangers of top-down, intuition-based decision making are well known in the business world. Experimentation and data-based decision making become widely acknowledged as the right way to steer a bu…

scott登錄查詢常用語句

一、簡單查詢 1.簡單查詢select * from emp;--查詢表emp中的所有數據select empno as id,ename as name from emp;--查詢表emp中的empno顯示為id&#xff0c;ename顯示為name 2.去除重復select distinct job from emp;--將表emp中的job去重select distinct job,deptno from emp…

CSS結構的基礎認知

css的屬性值與html的屬性值用法不相上下&#xff0c;但是css主要分為內聯樣式表和外聯樣式表。 內聯樣式表用法&#xff1a;在html文件中的《head》頭文件中添加<style></style>標簽&#xff0c;在標簽內添加所需的屬性值&#xff0c;例如&#xff1a;<!DOCTYPE…

BZOJ1453: [Wc]Dface雙面棋盤

Time Limit: 10 Sec Memory Limit: 64 MB Submit: 784 Solved: 422 [Submit][Status][Discuss] Description 佳佳有一個 nnn 行 nnn 列的黑白棋盤&#xff0c;每個格子都有兩面&#xff0c;一面白色&#xff0c;一面黑色。佳佳把棋盤平放在桌子上&#xff0c;因此每個格子恰好一…

用戶體驗數據分析 書單_如何使用數據改善用戶體驗設計

用戶體驗數據分析 書單In the current age of technology, if an entrepreneur comes up with a grand idea, chances are they’ll need a pretty sweet website to go along with it. And if they want their idea to really sell, they will also need a website that reall…

推薦11個實用的JavaScript庫

2019獨角獸企業重金招聘Python工程師標準>>> JavaScript 仍然是 2018 年最受歡迎和使用最為廣泛的編程語言&#xff0c;因此 JavaScript 生態系統也會繼續發展壯大。 然而&#xff0c;JavaScript 的標準庫仍然繼續保持“短小精悍”的身材。為了填補標準庫功能方面的…

371. 兩整數之和

371. 兩整數之和 給你兩個整數 a 和 b &#xff0c;不使用 運算符 和 - ???????&#xff0c;計算并返回兩整數之和。 示例 1&#xff1a; 輸入&#xff1a;a 1, b 2 輸出&#xff1a;3 示例 2&#xff1a; 輸入&#xff1a;a 2, b 3 輸出&#xff1a;5 提示&a…

【福利】微信小程序精選Demo合集

小編最近在開發小程序&#xff0c;也讀到了不少優秀的小程序源碼&#xff0c;項目中有些需求可以直接從源碼里粘貼復制過來&#xff0c;雖然這樣做不利于自己獨立編寫代碼&#xff0c;但比較是給公司做項目啊&#xff0c;秉著效率第一的原則&#xff0c;簡直沒有什么比ctrlc,ct…

639. 解碼方法 II

639. 解碼方法 II 一條包含字母 A-Z 的消息通過以下的方式進行了編碼&#xff1a; A -> 1 B -> 2 ... Z -> 26要 解碼 一條已編碼的消息&#xff0c;所有的數字都必須分組&#xff0c;然后按原來的編碼方案反向映射回字母&#xff08;可能存在多種方式&#xff09;。…

[cpyhon源代碼]dict對象原理學習

Cpython 2.7 分支中&#xff0c;dict 對象的源代碼 lookdict 搜索算法 1 static PyDictEntry *2 lookdict(PyDictObject *mp, PyObject *key, register long hash)3 {4 register size_t i;5 register size_t perturb;6 register PyDictEntry *freeslot;7 regis…

熊貓數據集_熊貓邁向數據科學的第一步

熊貓數據集I started learning Data Science like everyone else by creating my first model using some machine learning technique. My first line of code was :通過使用某種機器學習技術創建我的第一個模型&#xff0c;我開始像其他所有人一樣學習數據科學。 我的第一行代…

SQLServer鎖的機制

SQLServer鎖的機制&#xff1a;共享鎖(S)排它鎖(X)更新鎖(U)意向共享 (IS)意向排它 (IX) 意向排它共享 (SIX)架構修改(Sch-M) 架構穩定性(Sch-S)大容量更新&#xff08;BU&#xff09;轉載于:https://www.cnblogs.com/yldIndex/p/8603902.html