今日每日一題,最大間距,一看難度困難,我想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...