1.給定乙個數值在1-100的整數陣列,請找到其中缺少的數字。
找到丟失的數字 利用byte陣列的1或0標記該數字是否被刪除,例如byte陣列下標為0的數值為1的話,代表數字1存在
public static void findmissnumber1(int ints)
for (int i = 0; i < i***ist.length; i++) }}
我們可以利用1-100的總和為5050,我們依次減掉資料內的所有值,得到的差值即為刪除的值
public static void findmissnumber2(int ints)
system.out.println("刪除的數字:" + sum);
}
2.從陣列中找出給定目標數字的兩數組合。例如陣列為,給定數字給17,那麼陣列內的3+14=17。
先利用set儲存對應的數字,然後再遍歷陣列,假設遍歷到數字3的時候,檢查set中是否存在(17-3)=14這個數字,如果存在的話,即存在這個組合。
public static void findpairnumber(int arrays, int target)
for (int i = 0; i < arrays.length; i++) }}
3.將陣列進行反轉。
只需要將陣列按中間位置為對稱軸進行位置交換即可
public static void reversearray(int arrays)
}
4.尋找陣列中前k個最大的數。
我們新建乙個長度為k的陣列,遍歷原陣列,然後將大於k陣列內的數字,放進k陣列裡,然後冒泡淘汰末尾的數字,最後剩下的就是前k個最大的數字。
public static int findkmaxints(int k, int ints)
// 再進行冒泡
bulb(kints);
}return kints;
}public static void bulb(int ints) }}
5.求乙個陣列中連續子向量的最大和
遍歷陣列,從第乙個大於0的數字開始累加,儲存最大值,如果累加後的值小於等於0的話,就拋這一下標,從下乙個下標開始累積,如果超過之前的最大值的話就進行替換。使用sum和max變數進行操作
public static integer findmaxsum(int ints)
int currentsum = 0;
int maxsum = 0;
for (int i = 0; i < ints.length; i++)
if (currentsum > maxsum)
}return maxsum;
}
6.乙個陣列中數字都兩兩重複,只有乙個數字沒有重複,如何找到那個數字?
我們可以將所有數字進行異或,兩兩重複的數字,都會被抵消掉,剩餘最後的數字就是單個不重複的數字
public static integer findsinglenumber(int ints)
int singlenumber = ints[0];
for (int i = 1; i < ints.length; i++)
return singlenumber;
}
7.將乙個二維陣列順時針旋轉90度.
先找出旋轉90度,下標的變換規律。然後從外圈向內圈遞迴旋轉變換。
public static void rollmatrix90(int matrix, int circle)
int bound = matrix.length - circle - 1;
for (int i = circle; i < matrix.length - 1 - circle; i++)
rollmatrix90(matrix, circle + 1);
}
原陣列
1,2,3,4,5,
6,7,8,9,10,
11,12,13,14,15,
16,17,18,19,20,
21,22,23,24,25,
翻轉後的陣列
21,16,11,6,1,
22,17,12,7,2,
23,18,13,8,3,
24,19,14,9,4,
25,20,15,10,5,
8.找出陣列的中位數。
使用快排的思想,但是只往中間位置進行排序,當最後的排序下標抵達陣列中間位置的時,就是中位數。
public static int findmiddlenumber(int array, int begin, int end)
// 選擇begin位置的數字作為分界點
int splitnumber = array[begin];
while (begin + 1 < end)
if (array[end] > splitnumber)
int tmp = array[begin + 1];
array[begin + 1] = array[end];
array[end] = tmp;
}int tmp = array[beginrange];
array[beginrange] = array[begin];
array[begin] = tmp;
if (begin > array.length / 2) else
}
9.兩個有序陣列的合併排序
同時遍歷兩個陣列,每次對比兩個陣列當前座標的值哪個小,小的存入新的陣列,陣列下表往後移一位,大的那邊座標不變,繼續下次大小對比。依次迴圈。
陣列中的最大差值
有乙個長為n的陣列a,求滿足0 a b給定陣列 a及它的大小 n,請返回最大差值。解析 貪心思想,時間複雜度為o n 設定當前陣列中的最小值為min value。初始化為arr 0 然後依次遍歷陣列中的每乙個元素,當遍歷到乙個元素時求出當前元素與之前的min value差值,用該差值和當前最大的差值...
陣列 最大差值 演算法打卡 最大間距
難度 困難 題目 給定乙個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。如果陣列元素個數小於 2,則返回 0。思考 這個題目夠短了吧?但是難度是困難 跟看到長題目不要慌同樣重要的事,看到難度是困難也不要慌!這個看著也不是很難嘛,就是找出每兩個數之間的距離,最大距離!思路 因為陣列是亂序的,...
無序陣列求最大差值
乙個陣列a 0.n 1 求a j a i 的最大值,其中icite 第一種方法 從左往右求下標0到 k 1 的最小值min 從右往左求 下標k到n 1 的最大值max,對於每個k都有乙個max min的值,最後求這個值的最大值即可。例如陣列 4 5 2 6 3 1 k 1 2 3 4 5 min 4...