題目描述如下:
對於陣列中的元素 x,如果存在乙個子串行以 x-1 結尾,則可以將 x加入該子串行中。將 x 加入已有的子串行總是比新建
乙個只包含 x 的子串行更優,因為前者可以將乙個已有的子串行的長度增加 1,而後者新建乙個長度為 1 的子串行,而題
目要求分割成的子串行的長度都不小於 3,因此應該盡量避免新建短的子串行。
基於此,可以通過貪心的方法判斷是否可以完成分割。
使用兩個雜湊表,第乙個雜湊表儲存陣列中的每個數字的剩餘次數,第二個雜湊表儲存陣列中的每個數字作為結尾的子串行
的數量。
**實現如下:
public boolean ispossible(int nums)
for (int x : nums) else else }}
}return true;
}
letcode每日一題 不同路徑
話不多說,我們上題目 方法一 動態規劃 我們用 f i,j 表示從左上角走到 i,j 的路徑數量,其中 i 和 j 的範圍分別是 0,m 和 0,n 由於我們每一步只能從向下或者向右移動一步,因此要想走到 i,j 如果向下走一步,那麼會從 i 1,j 走過來 如果向右走一步,那麼會從 i,j 1 走...
letcode每日一題 最大間距
今日每日一題,最大間距,一看難度困難,我想ctrl c再ctrl v,但是再一看題,嗯,我好想可以 我的 這道題的難點在於如何用線性的時空複雜度來解決。直接sort然後遍歷陣列當然可以解決問題,但是面試的時候這 種解法肯定是不能讓面試官滿意的。實現 如下 public int maximumgap ...
letcode每日一題 四數相加 II
現在的天氣真的是冷的凍耳朵,做道題來熱熱身吧!題目描述如下 解題思路 a i b j c k d l 0 我們可以把a i b j c k d l 看成兩個整體,即兩個數相加為0,這樣最快的就是把其中一部分放進hash中,直接判斷0 另乙個數的結果在hash中是否存在就可以了。方案一 a為一部分,b...