letcode每日一題 最大間距

2022-07-16 00:54:13 字數 1096 閱讀 6948

今日每日一題,最大間距,一看難度困難,我想ctrl+c再ctrl+v,但是再一看題,嗯,,,,我好想可以

我的**:

這道題的難點在於如何用線性的時空複雜度來解決。直接sort然後遍歷陣列當然可以解決問題,但是面試的時候這

種解法肯定是不能讓面試官滿意的。

實現**如下:

public int maximumgap(int nums) 

if(nums.length<=2)

int max=arrays.stream(nums).max().getasint();

int min=arrays.stream(nums).min().getasint();

防止出現長度為0的情況

int bucket_len=math.max(1,(max-min)/(nums.length-1));

arraylist buckets=new arraylist[(max-min)/bucket_len+1];

for(int i=0;i();

}buckets[tmpindex].add(nums[i]);

}int result=0;

int prev=-1;

for(int i=0;i return a>b?1:-1;}).get()-prev;

if(tmp>result)

}prev=buckets[i].stream().max((a,b)-> return a>b?1:-1;}).get();}}

return result;

}

letcode 164求最大間距(鴿巢原理)

給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 2,則返回 0。輸入 3,6,9,1 輸出 3 解釋 排序後的陣列是 1,3,6,9 其中相鄰元素 3,6 和 6,9 之間都存在最大差值 3。輸入 10 輸出 0 解釋 陣列元素個數小於 2,因此返回 0。我們知...

letcode每日一題 不同路徑

話不多說,我們上題目 方法一 動態規劃 我們用 f i,j 表示從左上角走到 i,j 的路徑數量,其中 i 和 j 的範圍分別是 0,m 和 0,n 由於我們每一步只能從向下或者向右移動一步,因此要想走到 i,j 如果向下走一步,那麼會從 i 1,j 走過來 如果向右走一步,那麼會從 i,j 1 走...

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...