LeetCodeLCP 14 切分陣列

2021-10-09 01:47:39 字數 615 閱讀 1837

給定乙個整數陣列 nums ,小李想將 nums 切割成若干個非空子陣列,使得每個子陣列最左邊的數和最右邊的數的最大公約數大於 1 。為了減少他的工作量,請求出最少可以切成多少個子陣列。

示例 1:

輸入:nums = [2,3,3,2,3,3]

輸出:2

解釋:最優切割為 [2,3,3,2] 和 [3,3] 。第乙個子陣列頭尾數字的最大公約數為 2 ,第二個子陣列頭尾數字的最大公約數為 3 。

示例 2:

輸入:nums = [2,3,5,7]

輸出:4

解釋:只有一種可行的切割:[2], [3], [5], [7]

限制:1 <= nums.length <= 10^5

2 <= nums[i] <= 10^6

本題最樸素的思想就是對每個數把它拆成質數之積,然後進行dp。當我們遍歷到陣列元素nums[i]時,我們把nums[i]拆成一系列質數,p是其中乙個質數。f[p]表示到當前元素質數p的最小分組數,則有f[p] = min(f[p],minx + 1),其中minx 是上乙個元素nums[i-1]拆出質數中所有f[p]中最小的乙個。這樣這道題就完成了,只需求到最後乙個後把它的所有f[p]中最小的乙個(也就是下乙個的minx)取出即為答案。

資料庫 流量切分 資料庫水平切分方法

在大中型專案中,在資料庫設計的時候,考慮到資料庫最大承受資料量,通常會把資料庫或者資料表水平切分,以降低單個庫,單個表的壓力。我這裡介紹兩個我們專案中常用的資料表切分方法。當然這些方法都是在程式中使用一定的技巧來路由到具體的表的。首先我們要確認根據什麼來水平切分?在我們的系統 sns 中,使用者的u...

資料庫 流量切分 資料庫水平切分方法

在大中型專案中,在資料庫設計的時候,考慮到資料庫最大承受資料量,通常會把資料庫或者資料表水平切分,以降低單個庫,單個表的壓力。我這裡介紹兩個我們專案中常用的資料表切分方法。當然這些方法都是在程式中使用一定的技巧來路由到具體的表的。首先我們要確認根據什麼來水平切分?在我們的系統 sns 中,使用者的u...

Python使用指定字元長度切分資料

筆者在學習時被要求在python中使用指定字元長度切分資料。如,string型別的字串film type 都市浪漫愛情喜劇 已知電影型別都是兩個中文字元組成,要求切分出字串中的電影型別。這種情況下,我們可以使用xrange 函式,通過步長來切分。xrange 函式用法與 range 完全相同,所不同...