5432. 去掉最低工資和最高工資後的工資平均值
遍歷數組,求出最大值和最小值,用(sum(數組之和)- max - min)/ 數組的長度-2
代碼
class Solution {
public double average(int[] salary) {
double sum = 0;
double max = salary[0];
double min = salary[0];
for (int i = 0; i < salary.length; i++) {
if (max < salary[i]) {
max = salary[i];
}
if (min > salary[i]) {
min = salary[i];
}
sum = sum + salary[i];
}
double ave = (sum - max - min) / (salary.length - 2);
return ave;
}
}
5433. n 的第 k 個因子
直接暴力循環,將(n%i==0)的值存入數組中,最後用數組的長度和K來進行判斷
代碼
class Solution {
public int kthFactor(int n, int k) {
int[] array = new int[n];
int num = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
array[num++] = i;
}
}
if (num < k) {
return -1;
} else {
return array[k - 1];
}
}
}
5434. 刪掉一個元素以後全爲 1 的最長子數組
正順序遍歷一遍數組,求出每個元素前面有多少個1
倒順序遍歷一遍數組,求出每個元素後面有多少個1
用Math,max()函數求出刪除改元素,前面+後面的1,最後返回max
代碼
public static int longestSubarray(int[] nums) {
int[] array1 = new int[nums.length];
int[] array2 = new int[nums.length];
array1[0] = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] == 1) {
array1[i] = array1[i - 1] + 1;
} else {
array1[i] = 0;
}
}
array2[nums.length - 1] = nums[nums.length - 1];
for (int i = nums.length - 2; i >= 0; i--) {
if (nums[i] == 1) {
array2[i] = array2[i + 1] + 1;
} else {
array2[i] = 0;
}
}
int max = 0 + array2[1];
for (int i = 1; i < nums.length - 1; i++) {
max = Math.max(max, array1[i - 1] + array2[i + 1]);
}
max = Math.max(max, array1[nums[nums.length - 1]] + 0);
System.out.println(max);
return max;
}