相鄰兩數的最大差值
題目:相鄰兩數的最大差值
//主要功能函式
public static int maxGap(int[] nums) {
if (nums == null || nums.length < 2) {
return 0;
}
int len = nums.length;
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
//求出一組數中的最小值和最大值
for (int i = 0; i < len; i++) {
min = Math.min(min, nums[i]);
max = Math.max(max, nums[i]);
}
if (min == max) {
return 0;
}
//hashNum陣列標記該號桶是否有值
//求出該號桶的最大值,下標表示桶的位置
//求出該號桶的最小值,下標表示桶的位置
boolean[] hasNum = new boolean[len + 1];
int[] maxs = new int[len + 1];
int[] mins = new int[len + 1];
int bid = 0;
for (int i = 0; i < len; i++) {
bid = bucket(nums[i], len, min, max);
mins[bid] = hasNum[bid] ? Math.min(mins[bid], nums[i]) : nums[i];
maxs[bid] = hasNum[bid] ? Math.max(maxs[bid], nums[i]) : nums[i];
hasNum[bid] = true;
}
int res = 0;
int lastMax = maxs[0];
int i = 1;
for (; i <= len; i++) {
if (hasNum[i]) {
res = Math.max(res, mins[i] - lastMax);
lastMax = maxs[i];
}
}
return res;
}
//求出在幾號桶
public static int bucket(long num, long len, long min, long max) {
return (int) ((num - min) * len / (max - min));
}
相關文章
- 一維陣列:相鄰兩數求和陣列
- 每天一道演算法題--排序之桶排序實現求排序後相鄰最大差值問題演算法排序
- 陣列左邊減去右邊數值的最大差值陣列
- C語言萌新上手:相鄰數對C語言
- abc253E 相鄰元素之差不低於K的序列數
- 給定陣列中找到最大的兩個數陣列
- Linux awk中輸出上下兩列值之間的差值Linux
- 寫一個函式找出給定陣列中的最大差值函式陣列
- leetcode 747. 至少是其他數字兩倍的最大數LeetCode
- 用一個巨集實現求兩個數中的最大數
- 更相減損法(求最大公約數)
- 更相減損術求解最大公約數
- 每日一題:1026. 節點與其祖先之間的最大差值每日一題
- 刪除字串中的所有相鄰重複項字串
- 編寫js比較兩個數的最大值(使用者依次輸入兩個數,最後彈出最大的那個值)JS
- 如何在 Kitten 裡繪製兩個相鄰的正方體並響應使用者輸入事件事件
- adjacent_find返回第一對相鄰
- 反轉相鄰連結串列單元
- CSS (E+F)相鄰選擇器CSS
- 演算法設計與分析:求兩個自然數的最大公約數演算法
- 單連結串列-相鄰節點交還
- 解決div相鄰盒子邊框重疊
- CSS3 相鄰兄弟選擇器 hoverCSSS3
- python 計算兩個列表的相關係數的實現Python
- 求兩個正整數的最大公約數與最小公倍數--C#實現C#
- 3224. 使差值相等的最少陣列改動次數陣列
- 更相減損法求最大公約數(Greatest Common Divisor)
- 圖論系列之「相鄰節點迭代器 ( adjIterato ) 」圖論
- flutter: 相鄰控制元件陰影被遮蓋Flutter控制元件
- CSS 加號 (E+F) 相鄰選擇器CSS
- 舉例說明你對相鄰兄弟選擇器的理解
- joda.time之如何獲取到兩個時間的差值(正確的使用Period類)
- 輸入n個人的身高,然後從n個人中選出身高差值最小的兩個人作為禮儀(如果差值相同的話,選取其中最高的兩個人),要求輸出兩個禮儀的身高。
- HDU-1792-( 兩個互質的數線性組合最大不能表示的數和不能表示數的個數)
- LeetCode 2535[陣列元素和與數字和的絕對差值]LeetCode陣列
- JS-計算日期差值;計算日期之間的月數JS
- JAVA中計算兩個日期時間的差值竟然也有這麼多門道Java
- 演算法第四版-找兩個數的最大公約數演算法演算法