魔法师 (@Constanline) 在 Leetcode每日一题 —— 3471. 找出最大的几近缺失整数 中发帖
思路
分类讨论
k==n 所有元素都 只在1个子数组中出现过,直接取最大的。
k==1 所有元素独立1个子数组,所以取 只出现过1次的数值 中最大的。
排除了1、2后,只有头元素和尾元素可能只出现过1次。分以下两种情况
nums[0]==nums[n-1] ,没有元素只出现过1次,返回-1。
遍历所有元素,检查是否存在与头、尾元素相等的元素,如果有从可能性中排除。如果头、尾的可能性都存在,取最大那个;如果只有一个,直接返回这个元素;如果都被排除,返回-1.
代码
class Solution {
public int largestInteger(int[] nums, int k) {
int n = nums.length;
if (k == n) {
int max = 0;
fo...