Stories

Detail Return Return

每日一題:第474場周賽 Q1. 找出缺失的元素 - Stories Detail

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];
    }
}

Add a new Comments

Some HTML is okay.