【剑指OFFER】56 - II. 数组中数字出现的次数 II
发布日期:2021-06-29 19:47:16 浏览次数:3 分类:技术文章

本文共 1149 字,大约阅读时间需要 3 分钟。

题目:在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

示例 1:

输入:nums = [3,4,3,3]

输出:4

示例 2:

输入:nums = [9,1,7,9,7,9,7]

输出:1

限制:

1 <= nums.length <= 10000

1 <= nums[i] < 2^31

答案:

解法一:

class Solution {
public int singleNumber(int[] nums) {
//(不重复的和 - (总和-不重复的和)/ 2) long sum1 = 0, sum2 = 0; Set
set = new HashSet<>(); for(int n : nums){
set.add(n); sum1 += n; } Iterator i = set.iterator(); while(i.hasNext()){
sum2 += (int)i.next(); } return (int)(sum2 - ((sum1 - sum2) / 2)); }}

解法二:

class Solution {
public int singleNumber(int[] nums) {
//Stream的效果就像上图展示的它可以先把数据变成符合要求的样子(map),吃掉不需要的东西(filter)然后得到需要的东西(collect)。 return IntStream.of(nums) .boxed()//装箱 .collect(Collectors.groupingBy(s -> s))//分组 .entrySet()//entrySet实现了Set接口,里面存放的是键值对。一个K对应一个V。用来遍历map的一种方法 .stream()//流 .filter(it -> it.getValue().size()<=1)//过滤 .findFirst()//找到第一个元素 .get()//获得该元素 .getKey();//获得该元素的值 }}

转载地址:https://darkness.blog.csdn.net/article/details/115616552 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【力扣】783. 二叉搜索树节点最小距离
下一篇:【剑指OFFER】56 - I. 数组中数字出现的次数

发表评论

最新留言

不错!
[***.144.177.141]2024年04月07日 21时56分27秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章