給定乙個整數陣列 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 完全相同,所不同...