前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >LeetCode 1394. 找出数组中的幸运数(map计数)

LeetCode 1394. 找出数组中的幸运数(map计数)

作者头像
Michael阿明
发布于 2020-07-13 07:46:47
发布于 2020-07-13 07:46:47
65800
代码可运行
举报
运行总次数:0
代码可运行

1. 题目

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
示例 1:
输入:arr = [2,2,3,4]
输出:2
解释:数组中唯一的幸运数是 2 ,因为数值 2 的出现频次也是 2 。

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

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

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

示例 5:
输入:arr = [7,7,7,7,7,7,7]
输出:7
 
提示:
1 <= arr.length <= 500
1 <= arr[i] <= 500

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

2. 解题

2.1 map计数

  • map计数,map有序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    int findLucky(vector<int>& arr) {
    	map<int,int> m;
    	for(int a : arr)
    		m[a]++;
    	int ans = -1;
    	for(auto& mi : m)
    		if(mi.first == mi.second)
    			ans = mi.first;
		return ans;
    }
};

20 ms 10.4 MB

2.2 Python3解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution:
    def findLucky(self, arr: List[int]) -> int:
        ans = sorted(filter(lambda x :x[0]==x[1], zip(set(arr),map(arr.count,set(arr)))), key = lambda x:x[0])
        return ans[-1][0] if ans else -1;

72 ms 13.5 MB

  • zip(set(arr),map(arr.count,set(arr)) zip打包成:set去重的集合,及对应的个数map
  • filter:取出 满足 lambda 表达式的x[0]==x[1](元素==其频次)
  • sorted 排序,key按照元素大小升序
  • 返回ans[-1][0] if ans else -1,最后一个【-1】最大的,【0】表示元素,ans空返回-1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 1394. 找出数组中的幸运数
[1] 1394. 找出数组中的幸运数: https://leetcode-cn.com/problems/find-lucky-integer-in-an-array/
村雨遥
2020/04/10
3790
LeetCode 1394. 找出数组中的幸运数
在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。
freesan44
2020/06/03
4180
LeetCode 1380. 矩阵中的幸运数(set)
给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。
Michael阿明
2020/07/13
5610
LeetCode 1380. 矩阵中的幸运数
https://leetcode-cn.com/problems/lucky-numbers-in-a-matrix/
freesan44
2021/10/27
3500
LeetCode 1380. 矩阵中的幸运数
有没有那么一道题,让你真正理解了Python编程?
音乐结束,回到正题。近日浏览LeetCode,发现了一道很有意思的小题目。当我尝试用Python解答的时候,居然动用了集合、map函数、zip函数、lambda函数、sorted函数,调试过程还涉及到了迭代器、生成器、列表推导式的概念。一个看似极为简单的题目,尽管最终的代码可以合并成一行,却几乎把Python的编程技巧用了一遍,真可谓“细微之处见精神”!通过这个题目,也许会让你从此真正理解了Python编程。
用户2966292
2020/04/07
7670
1.1 5368. 找出数组中的幸运数(1394. Find Lucky Integer in an Array)
0. 前言 决定重新开始刷 LeetCode,这周参见了周赛 中文版地址:https://leetcode-cn.com/contest/weekly-contest-182/ 英文版地址:https://leetcode.com/contest/weekly-contest-182 1. 题解 1.1 5368. 找出数组中的幸运数(1394. Find Lucky Integer in an Array) 中文版题目描述:https://leetcode-cn.com/contest/weekly-c
西凉风雷
2022/11/23
2430
LeetCode 1409. 查询带键的排列(map模拟)
给你一个待查数组 queries ,数组中的元素为 1 到 m 之间的正整数。 请你根据以下规则处理所有待查项 queries[i](从 i=0 到 i=queries.length-1):
Michael阿明
2020/07/13
5490
LeetCode 第 22 场双周赛(220/2041,前10.8%)
全国排名:220 / 2041,10.8%;全球排名:729 / 5630,12.9%
Michael阿明
2020/07/13
3320
LeetCode 1748. 唯一元素的和
https://leetcode-cn.com/problems/sum-of-unique-elements/
Michael阿明
2021/09/07
2750
LeetCode 1535. 找出数组游戏的赢家
每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行。 比较 arr[0] 与 arr[1] 的大小,较大的整数将会取得这一回合的胜利并保留在位置 0 ,较小的整数移至数组的末尾。 当一个整数赢得 k 个连续回合时,游戏结束,该整数就是比赛的 赢家 。
Michael阿明
2021/02/19
3690
LeetCode 2007. 从双倍数组中还原原数组(map)
一个整数数组 original 可以转变成一个 双倍 数组 changed ,转变方式为将 original 中每个元素 值乘以 2 加入数组中,然后将所有元素 随机打乱 。
Michael阿明
2022/01/07
6990
LeetCode 2248. 多个数组求交集(set)
给你一个二维整数数组 nums ,其中 nums[i] 是由 不同 正整数组成的一个非空数组,按 升序排列 返回一个数组,数组中的每个元素在 nums 所有数组 中都出现过。
Michael阿明
2022/05/10
5320
LeetCode 945. 使数组唯一的最小增量(贪心)
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-increment-to-make-array-unique 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Michael阿明
2020/07/13
4910
LeetCode 1854. 人口最多的年份(差分)
给你一个二维整数数组 logs ,其中每个 logs[i] = [birthi, deathi] 表示第 i 个人的出生和死亡年份。
Michael阿明
2021/09/06
5970
LeetCode 第 23 场双周赛(970/2044,前47.5%)
做出来了 1、3 两题,继续加油! 第二道字符串的题,又是看错题,以后要多读几遍题目,题目说要使用所有字符,我视而不见,去排列组合。。。 第四题,想到了贪心,又转到动态规划去做,没做出来。
Michael阿明
2020/07/13
3210
LeetCode 1940. 排序数组之间的最长公共子序列(二分查找)
给定一个由整数数组组成的数组arrays,其中arrays[i]是严格递增排序的,返回一个表示所有数组之间的最长公共子序列的整数数组。
Michael阿明
2021/09/06
4470
LeetCode 1481. 不同整数的最少数目(计数+排序+贪心)
给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。
Michael阿明
2020/07/13
5390
LeetCode 781. 森林中的兔子(哈希+贪心)
森林中,每个兔子都有颜色。 其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。 我们将这些回答放在 answers 数组里。
Michael阿明
2021/02/19
3470
LeetCode 508. 出现次数最多的子树元素和(递归)
给你一个二叉树的根结点,请你找出出现次数最多的子树元素和。 一个结点的「子树元素和」定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。
Michael阿明
2020/07/13
4040
LeetCode 1213. 三个有序数组的交集(哈希set)
文章目录 1. 题目 2. 解题 1. 题目 给出三个均为 严格递增排列 的整数数组 arr1,arr2 和 arr3。 返回一个由 仅 在这三个数组中 同时出现 的整数所构成的有序数组。 示例: 输入: arr1 = [1,2,3,4,5], arr2 = [1,2,5,7,9], arr3 = [1,3,4,5,8] 输出: [1,5] 解释: 只有 1 和 5 同时在这三个数组中出现. 提示: 1 <= arr1.length, arr2.length, arr3.length <= 1000 1
Michael阿明
2020/07/13
8830
推荐阅读
相关推荐
LeetCode 1394. 找出数组中的幸运数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验