每日一题:第474场周赛 Q1. 找出缺失的元素
<h1 id="q1-找出缺失的元素">Q1. 找出缺失的元素</h1><p>给你一个整数数组 <code>nums</code> ,数组由若干 <strong>互不相同</strong> 的整数组成。</p>
<p>数组 <code>nums</code> 原本包含了某个范围内的 <strong>所有整数</strong> 。但现在,其中可能 <strong>缺失</strong> 部分整数。</p>
<p>该范围内的 <strong>最小</strong> 整数和 <strong>最大</strong> 整数仍然存在于 <code>nums</code> 中。</p>
<p>返回一个 <strong>有序</strong> 列表,包含该范围内缺失的所有整数,并 <strong>按从小到大排序</strong>。如果没有缺失的整数,返回一个 <strong>空</strong> 列表。</p>
<p><strong>示例 1:</strong></p>
<p>输入: nums = </p>
<p>输出: </p>
<p>解释:</p>
<p>最小整数为 1,最大整数为 5,因此完整的范围应为 。其中只有 3 缺失。</p>
<p><strong>示例 2:</strong></p>
<p>输入: nums = </p>
<p>输出: []</p>
<p>解释:</p>
<p>最小整数为 6,最大整数为 9,因此完整的范围为 。所有整数均已存在,因此没有缺失的整数。</p>
<p><strong>示例 3:</strong></p>
<p>输入: nums = </p>
<p>输出: </p>
<p>解释:</p>
<p>最小整数为 1,最大整数为 5,因此完整的范围应为 。缺失的整数为 2、3 和 4。</p>
<p><strong>提示:</strong></p>
<p>2 <= nums.length <= 100<br>
1 <= nums <= 100</p>
<p>题目链接</p>
<hr>
<p><strong>Q1题解:</strong></p>
<details>
<summary>点击查看代码</summary>
<pre><code class="language-java">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+1 != nums){
res.add(nums+1);
nums+=1;
}
}
// System.out.println(Arrays.toString(nums));
return res;
}
}
</code></pre>
</details>
<h1 id="q2-一次替换后的三元素最大乘积">Q2. 一次替换后的三元素最大乘积</h1>
<p>给你一个整数数组 <code>nums</code>。</p>
<p>你 <strong>必须</strong> 将数组中的 <strong>恰好一个</strong> 元素替换为范围 <code>[-10^5, 10^5]</code>(包含边界)内的 <strong>任意</strong> 整数。</p>
<p>在进行这一替换操作后,请确定从修改后的数组中选择 <strong>任意三个互不相同的下标</strong> 对应的元素所能得到的 <strong>最大乘积</strong> 。</p>
<p>返回一个整数,表示可以达到的 <strong>最大乘积</strong> 。</p>
<p><strong>示例 1:</strong></p>
<p>输入: nums = [-5,7,0]</p>
<p>输出: 3500000</p>
<p>解释:</p>
<p>用 -10^5 替换 0,可得数组 [-5, 7, -10^5],其乘积为 (-5) * 7 * (-10^5) = 3500000。最大乘积为 3500000。</p>
<p><strong>示例 2:</strong></p>
<p>输入: nums = [-4,-2,-1,-3]</p>
<p>输出: 1200000</p>
<p>解释:</p>
<p>有两种方法可以达到最大乘积:</p>
<p>[-4, -2, -3] → 将 -2 替换为 10^5 → 乘积为 (-4) * 10^5 * (-3) = 1200000。<br>
[-4, -1, -3] → 将 -1 替换为 10^5 → 乘积为 (-4) * 10^5 * (-3) = 1200000。<br>
最大乘积为 1200000。</p>
<p><strong>示例 3:</strong></p>
<p>输入: nums = </p>
<p>输出: 0</p>
<p>解释:</p>
<p>无论将哪个元素替换为另一个整数,数组始终会包含 0。因此,三个元素的乘积始终为 0,最大乘积为 0。</p>
<p>题目链接</p>
<p><strong>题解:</strong></p>
<details>
<summary>点击查看代码</summary>
<pre><code class="language-java">class Solution {
public long maxProduct(int[] nums) {
int[] sortNums=Arrays.stream(nums).map(Math::abs).sorted().toArray();
return 100000L * sortNums * sortNums;
}
}
</code></pre>
</details>
<hr><br><br>
来源:https://www.cnblogs.com/chloe7799/p/19185639
頁:
[1]