LeetCode刷题记录(三十六):在长度 2N 的数组中找出重复 N 次的元素

本文介绍了一种解决编程问题的方法,即在长度为2N的数组中找到重复N次的元素。通过使用单次循环和Set集合,可以高效地找到唯一重复的值。这种方法避免了双重循环的效率低下,同时利用Set的特性检查元素是否存在。代码示例展示了如何实现这一解决方案,并讨论了使用Set可能导致的内存占用问题。
摘要由CSDN通过智能技术生成

theme: smartblue

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情

在长度 2N 的数组中找出重复 N 次的元素

image.png

题目解析

题目难度:简单
题目素材解析

根据题目的描述和代码模板来看,只提供了一个参数素材:

  1. 含零的正整数数组nums,且最大长度在4到10000之间。

提供了一个概念:

  1. nums数组中的元素,只会存在一个重复元素,并且这个元素会占用数组一半的位置。
我的解读

根据题目的素材和概念来解决这个问题,其实很简单。

只需要抓住一个点,那就是只有一个元素会存在重复值,一下子就清晰多了。

通过判断一个值是否在数组中已经存在的方法就很多了。

解题思路

这里要真正解决这个问题,还需要在双重循环和单次循环中选择一下。

如果数组比较大的话,双重循环就会比较费时费力了。

所以还是选择单次循环,通过Set集合来解决是否存在的问题。

第一步,先声明一个Set集合变量set。

第二步,开始循环数组。

第三步,循环体中只做一个判断,如果set集合中存在当前元素,就直接返回该结果;如果不存在当前元素,就添加到set集合中。

如此就能得到正确的答案了。

在看大哥们的题解时,还是很多情况下都是使用set集合,但是也有大哥使用计数,显然是有的大哥不满意set占用内存比较高。

代码

```java class Solution {

public int repeatedNTimes(int[] nums) {
    Set<Integer> set = new HashSet<>();
    for (int a : nums){
        if(set.contains(a)){
            return a;
        }else{
            set.add(a);
        }
    }
    return 0;
}

} ```

执行结果

使用Set集合显然内存会稍高一些。

image.png

Java代码本地执行

Java本地可调试代码,请参考github/Ijiran,可通过索引看到相应代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ijiran

一杯咖啡太贵,一块糖就可以

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值