每日一題:第474場周賽 Q1. 找出缺失的元素
Q1. 找出缺失的元素
給你一個整數數組 nums ,數組由若干 互不相同 的整數組成。
數組 nums 原本包含了某個范圍內的 所有整數 。但現在,其中可能 缺失 部分整數。
該范圍內的 最小 整數和 最大 整數仍然存在于 nums 中。
返回一個 有序 列表,包含該范圍內缺失的所有整數,并 按從小到大排序。如果沒有缺失的整數,返回一個 空 列表。
示例 1:
輸入: nums = [1,4,2,5]
輸出: [3]
解釋:
最小整數為 1,最大整數為 5,因此完整的范圍應為 [1,2,3,4,5]。其中只有 3 缺失。
示例 2:
輸入: nums = [7,8,6,9]
輸出: []
解釋:
最小整數為 6,最大整數為 9,因此完整的范圍為 [6,7,8,9]。所有整數均已存在,因此沒有缺失的整數。
示例 3:
輸入: nums = [5,1]
輸出: [2,3,4]
解釋:
最小整數為 1,最大整數為 5,因此完整的范圍應為 [1,2,3,4,5]。缺失的整數為 2、3 和 4。
提示:
2 <= nums.length <= 100
1 <= nums[i] <= 100
Q1題解:
點擊查看代碼
import java.util.*;
class Solution {
public List<Integer> findMissingElements(int[] nums) {
Arrays.sort(nums);
List<Integer> res = new ArrayList<>();
for (int i=0;i+1<nums.length;i++){
while (nums[i]+1 != nums[i+1]){
res.add(nums[i]+1);
nums[i]+=1;
}
}
// System.out.println(Arrays.toString(nums));
return res;
}
}
Q2. 一次替換后的三元素最大乘積
給你一個整數數組 nums。
你 必須 將數組中的 恰好一個 元素替換為范圍 [-10^5, 10^5](包含邊界)內的 任意 整數。
在進行這一替換操作后,請確定從修改后的數組中選擇 任意三個互不相同的下標 對應的元素所能得到的 最大乘積 。
返回一個整數,表示可以達到的 最大乘積 。
示例 1:
輸入: nums = [-5,7,0]
輸出: 3500000
解釋:
用 -10^5 替換 0,可得數組 [-5, 7, -10^5],其乘積為 (-5) * 7 * (-10^5) = 3500000。最大乘積為 3500000。
示例 2:
輸入: nums = [-4,-2,-1,-3]
輸出: 1200000
解釋:
有兩種方法可以達到最大乘積:
[-4, -2, -3] → 將 -2 替換為 10^5 → 乘積為 (-4) * 10^5 * (-3) = 1200000。
[-4, -1, -3] → 將 -1 替換為 10^5 → 乘積為 (-4) * 10^5 * (-3) = 1200000。
最大乘積為 1200000。
示例 3:
輸入: nums = [0,10,0]
輸出: 0
解釋:
無論將哪個元素替換為另一個整數,數組始終會包含 0。因此,三個元素的乘積始終為 0,最大乘積為 0。
題解:
點擊查看代碼
class Solution {
public long maxProduct(int[] nums) {
int[] sortNums=Arrays.stream(nums).map(Math::abs).sorted().toArray();
return 100000L * sortNums[sortNums.length-1] * sortNums[sortNums.length-2];
}
}

浙公網安備 33010602011771號