欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > ⭐LeetCode周赛 Q1. 找出最大的几近缺失整数——模拟⭐

⭐LeetCode周赛 Q1. 找出最大的几近缺失整数——模拟⭐

2025/3/12 11:35:07 来源:https://blog.csdn.net/xiangguang_fight/article/details/146159178  浏览:    关键词:⭐LeetCode周赛 Q1. 找出最大的几近缺失整数——模拟⭐

⭐LeetCode周赛 Q1. 找出最大的几近缺失整数——模拟⭐

在这里插入图片描述

示例 1:
输入:nums = [3,9,2,1,7], k = 3
输出:7
解释:
1 出现在两个大小为 3 的子数组中:[9, 2, 1]、[2, 1, 7]
2 出现在三个大小为 3 的子数组中:[3, 9, 2]、[9, 2, 1]、[2, 1, 7]
3 出现在一个大小为 3 的子数组中:[3, 9, 2]
7 出现在一个大小为 3 的子数组中:[2, 1, 7]
9 出现在两个大小为 3 的子数组中:[3, 9, 2]、[9, 2, 1]
返回 7 ,因为它满足题意的所有整数中最大的那个。
注意:竞赛中,请勿复制题面内容,以免影响您的竞赛成绩真实性。©leetcode

题解:

根据情况模拟即可;

代码:

// 非特殊情况下 结果x应该为两端的数字之一 
// 因要保证x恰好仅出现在nums中的一个大小为k的子数组中 而k一般均为[2,len-1]内
// 故只有两端才可保证唯一 此时即两端数字分别验证是否不重复即可 返回不重复的一个 若均不重复返回大的即可
// 特殊情况即k == len || k == 1
// 1. k == len 此时即取数组最大值即可 因此时大小为k的子数组只有一个 故数组中每个数据均满足x的条件
// 2. k == 1   此时即取数组中不重复的数据且尽可能大即可
class Solution {public int largestInteger(int[] nums, int k) {if(k == nums.length){Arrays.sort(nums);return nums[nums.length-1];}int[] hash = new int[51];for(int i=0;i<nums.length;i++){hash[nums[i]]++; }if(k == 1){int max = -1;for(int i=0;i<nums.length;i++){if(hash[nums[i]] == 1){max = Math.max(max,nums[i]);}else{continue;}}return max;}if(hash[nums[nums.length-1]] > 1 && hash[nums[0]] > 1){return -1;}else if(hash[nums[nums.length-1]] > 1){return nums[0];}else if(hash[nums[0]] > 1){return nums[nums.length-1];}return Math.max(nums[0],nums[nums.length-1]);}
}

结果:

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词