编程练习【找出数组中的幸运数】

这篇具有很好参考价值的文章主要介绍了编程练习【找出数组中的幸运数】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。

给你一个整数数组 arr,请你从中找出并返回一个幸运数。

如果数组中存在多个幸运数,只需返回 最大 的那个。
如果数组中不含幸运数,则返回 -1 。

示例 1:

输入:arr = [2,2,3,4]
输出:2
解释:数组中唯一的幸运数是 2 ,因为数值 2 的出现频次也是 2 。
示例 2:

输入:arr = [1,2,2,3,3,3]
输出:3
解释:1、2 以及 3 都是幸运数,只需要返回其中最大的 3 。
示例 3:

输入:arr = [2,2,2,3,3]
输出:-1
解释:数组中不存在幸运数。
示例 4:

输入:arr = [5]
输出:-1
示例 5:

输入:arr = [7,7,7,7,7,7,7]
输出:7

题目来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-lucky-integer-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

利用一个Map来记录每个数字和它出现的次数,遍历数组,将数字作“键”,次数作“值”,再比较次数和数字一样的值,保存到结果result中,循环此操作,找到最大的幸运数字。

代码:

public int findLucky(int[] arr) {
		Map<Integer, Integer> map=new HashMap<Integer, Integer>();
		for(int x:arr) {
			map.put(x, map.getOrDefault(x, 0)+1);
		}
		int result=-1;
		for(Map.Entry<Integer, Integer> entry:map.entrySet()) {
			int key=entry.getKey(),value=entry.getValue();
			if(key==value) {
				result=Math.max(result, key);
			}
		}
		return result;
    }

 文章来源地址https://www.toymoban.com/news/detail-488706.html

到了这里,关于编程练习【找出数组中的幸运数】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯官网练习题(幸运数字)

    问题描述 哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整数。例如 126 是十进制下的一个哈沙德数,因为 (126)10​mod(1+2+6)=0;126 也是八进制下的哈沙德数,因为 (126)10=(176)8,(126)10mod(1+7+6)=0;同时 126 也是 1616 进制下的哈沙德数,因为 (126)10=(7e)1

    2024年02月09日
    浏览(44)
  • 【PTA-C语言】编程练习4 - 数组Ⅱ

    如果代码存在问题,麻烦大家指正 ~ ~ 有帮助麻烦点个赞 ~ ~ 作者 李民 单位 武汉理工大学 本题模拟2048游戏的规则,提供4X4个格子,输入每个格子的初始值(空白格子值为0),玩家选择向下移动,所有数字向下靠拢,相同的数字相撞时会合并。移动结束后,输出合并后的数值

    2024年02月03日
    浏览(41)
  • 【PTA-C语言】编程练习4 - 数组Ⅰ

    如果代码存在问题,麻烦大家指正 ~ ~ 有帮助麻烦点个赞 ~ ~ 作者 翁恺 单位 浙江大学 班级里要搞智力竞赛啦!同学们都踊跃参加。进入最后决赛的是10个同学,随着一道道题目的出示,有时是1号选手得分,有时是5号选手得分,每次答对者得10分,最后结果如何呢? 输入格式:

    2024年02月03日
    浏览(41)
  • 《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )

    有如下需求,保证 account.withdraw 取款方法的线程安全 原有实现并不是线程安全的 测试代码 执行测试代码,某次执行结果 5.1.1 为么不安全 withdraw 方法是临界区,会存在线程安全问题 查看下字节码 多线程在执行过程中可能会出现指令的交错,从而结果错误! 5.1.2 解决思路1

    2023年04月12日
    浏览(44)
  • 用C语言解决三个整数比大小,x,y,z三个整数求最小整数,从键盘上输入3个不同的整数×,y,Z,请设计一个算法找出其中最小的数,并画出流程图。

    用C语言解决三个整数比大小,x,y,z三个整数求最小整数,从键盘上输入3个不同的整数×,y,Z,请设计一个算法找出其中最小的数,并画出流程图。 以下是一个用C语言解决三个整数比大小的示例代码: 流程图如下所示: 开始 输入三个不同的整数 x, y, z 设 min = x 如果 y min,则 m

    2024年02月07日
    浏览(41)
  • 找出数组中最小K个数【最小堆】

    面试题 17.14. 最小K个数 - 力扣(LeetCode) 设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例: 提示: 0 = len(arr) = 100000 0 = k = min(100000, len(arr))

    2024年02月11日
    浏览(40)
  • 【运维知识高级篇】34道Shell编程练习题及答案(从基础到实战:基础+计算+判断+循环+控制与数组+实战进阶)

    ​本篇文章几乎涵盖了绝大部分的Shell语法练习,用一个个实战练习,巩固Shell的学习,话不多说,直接开始。 练习1:按照时间生成文件\\\"2018-05-22.log\\\"将每天的磁盘使用状态写入到对应日期的文件 练习2:统计Nginx日志中每个IP的访问量有多少,日志格式如下 练习3:写一个脚本

    2024年02月14日
    浏览(59)
  • 【基础算法】[PTA]-找出不是两个数组共有的元素

    找出不是两个数组共有的元素 题目描述: 解题思路: 【整体思路】:在两个整型数组中,找出不是两者共有的元素,意思就是既要在第一个数组中找出第二个数组中没有出现的元素,也要在第二个数组中找出第一个数组中没有出现的元素。所以这里可以每个数组做一次主体

    2024年02月04日
    浏览(43)
  • LeetCode2670. 找出不同元素数目差数组:哈希表(预处理)

    力扣题目链接:https://leetcode.cn/problems/find-the-distinct-difference-array/ 给你一个下标从 0 开始的数组 nums ,数组长度为 n 。 nums 的 不同元素数目差 数组可以用一个长度为 n 的数组 diff 表示,其中 diff[i] 等于前缀 nums[0, ..., i] 中不同元素的数目 减去 后缀 nums[i + 1, ..., n - 1] 中不同元

    2024年02月21日
    浏览(40)
  • 找出乱序数组第k大的数字(堆排序专场)

    使用堆排序来解决《乱序数组第k大的数字》 先放上代码(虽然leetcode要求O(n),但是堆排序是O(nlogn)) `class Solution { public int findKthLargest(int[] nums, int k) { int heapSize = nums.length; buildHeap(nums, heapSize); for(int i = nums.length - 1; i = nums.length - k + 1; i--) { swap(nums, 0, i); heapSize--; buildHeap(nums,

    2024年02月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包