LeetCode34--去掉最低工資和最高工資後的工資平均值、判斷能否形成等差數列、重新排列字串
阿新 • • 發佈:2021-01-27
技術標籤:Leetcode刷題
1.去掉最低工資和最高工資後的工資平均值
//給你一個整數陣列 salary ,數組裡每個數都是 唯一 的,其中 salary[i] 是第 i 個員工的工資。 // // 請你返回去掉最低工資和最高工資以後,剩下員工工資的平均值。 // // // // 示例 1: // // 輸入:salary = [4000,3000,1000,2000] //輸出:2500.00000 //解釋:最低工資和最高工資分別是 1000 和 4000 。 //去掉最低工資和最高工資以後的平均工資是 (2000+3000)/2= 2500 // // // 示例 2: // // 輸入:salary = [1000,2000,3000] //輸出:2000.00000 //解釋:最低工資和最高工資分別是 1000 和 3000 。 //去掉最低工資和最高工資以後的平均工資是 (2000)/1= 2000 // // // 示例 3: // // 輸入:salary = [6000,5000,4000,3000,2000,1000] //輸出:3500.00000 // // // 示例 4: // // 輸入:salary = [8000,9000,2000,3000,6000,1000] //輸出:4750.00000 // // // // // 提示: // // // 3 <= salary.length <= 100 // 10^3 <= salary[i] <= 10^6 // salary[i] 是唯一的。 // 與真實值誤差在 10^-5 以內的結果都將視為正確答案。 // // Related Topics 排序 陣列
public double average(int[] salary) {
Arrays.sort(salary);
double sum = 0;
for (int i = 1; i < salary.length-1; i++) {
sum += salary[i];
}
return sum/(salary.length-2);
}
2.判斷能否形成等差數列
//給你一個數字陣列 arr 。 // // 如果一個數列中,任意相鄰兩項的差總等於同一個常數,那麼這個數列就稱為 等差數列 。 // // 如果可以重新排列陣列形成等差數列,請返回 true ;否則,返回 false 。 // // // // 示例 1: // // 輸入:arr = [3,5,1] //輸出:true //解釋:對陣列重新排序得到 [1,3,5] 或者 [5,3,1] ,任意相鄰兩項的差分別為 2 或 -2 ,可以形成等差數列。 // // // 示例 2: // // 輸入:arr = [1,2,4] //輸出:false //解釋:無法通過重新排序得到等差數列。 // // // // // 提示: // // // 2 <= arr.length <= 1000 // -10^6 <= arr[i] <= 10^6 // // Related Topics 排序 陣列
public boolean canMakeArithmeticProgression(int[] arr) {
Arrays.sort(arr);
for (int i = 1; i < arr.length-1; i++) {
if(arr[i]-arr[i-1] != arr[i+1] - arr[i]){
return false;
}
}
return true;
}
3.重新排列字串
//給你一個字串 s 和一個 長度相同 的整數陣列 indices 。 // // 請你重新排列字串 s ,其中第 i 個字元需要移動到 indices[i] 指示的位置。 // // 返回重新排列後的字串。 // // // // 示例 1: // // // // 輸入:s = "codeleet", indices = [4,5,6,7,0,2,1,3] //輸出:"leetcode" //解釋:如圖所示,"codeleet" 重新排列後變為 "leetcode" 。 // // // 示例 2: // // 輸入:s = "abc", indices = [0,1,2] //輸出:"abc" //解釋:重新排列後,每個字元都還留在原來的位置上。 // // // 示例 3: // // 輸入:s = "aiohn", indices = [3,1,4,2,0] //輸出:"nihao" // // // 示例 4: // // 輸入:s = "aaiougrt", indices = [4,0,2,6,7,3,1,5] //輸出:"arigatou" // // // 示例 5: // // 輸入:s = "art", indices = [1,0,2] //輸出:"rat" // // // // // 提示: // // // s.length == indices.length == n // 1 <= n <= 100 // s 僅包含小寫英文字母。 // 0 <= indices[i] < n // indices 的所有的值都是唯一的(也就是說,indices 是整數 0 到 n - 1 形成的一組排列)。 // // Related Topics 排序
public String restoreString(String s, int[] indices) {
String s1 = "";
Map<Integer, Character> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
map.put(indices[i], s.charAt(i));
}
for (Integer key:map.keySet()) {
s1 += map.get(key);
}
return s1;
}