Go语言LeetCode题解961在长度2N的数组中找出重复N次元素

 更新时间:2022年12月28日 11:45:18   作者:刘09k11  
这篇文章主要为大家介绍了Go语言LeetCode题解961在长度2N的数组中找出重复N次元素示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目描述

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

给你一个整数数组 nums ,该数组具有以下属性:

  • nums.length == 2 * n.
  • nums 包含 n + 1 个 不同的 元素
  • nums 中恰有一个元素重复 n 次

找出并返回重复了 n 次的那个元素。

示例 1:

输入:nums = [1,2,3,3]
输出:3

示例 2:

输入:nums = [2,1,2,5,3,2]
输出:2

示例 3:

输入:nums = [5,1,5,2,5,3,5,4]
输出:5

提示:

2 <= n <= 5000

nums.length == 2 * n

0 <= nums[i] <= 10^4

nums 由 n + 1 个 不同的 元素组成,且其中一个元素恰好重复 n 次

思路分析

先来复习一下2n+1:

2n+1个数字中,其中有n+1个数字是相同的,找出这个重复次数最多的数字

同归于尽法,每遍历一个元素,检查手里的元素与之是不是相同 如果相同计数+1,不相同计数-1, 如果手里没有元素,也就是当计数为0的时候,将当前的这个元素拿到手里

现在来看这个题目。2n个元素,要是按照之前那个同归于尽的做法来,最后手里不会有元素存在的,都同归于尽了 那怎么办呢?

既然没有2n+1的场景,那我们就尽量制造出这个情况

比如:[1,2,4,5,3,3,3,3]这个序列

我们就把第一个元素1为要剔除的元素 将原来的数组分成了两部分,[1,2]和 [4,5,3,3,3,3] 对后一部分的序列用同归于尽的做法,是不是就得到结果了!!

当然有人会问,1如果是结果怎么办呢,比如这个序列[1,1,1,1,2,4,5,3] 这样的情况,只需要在剔除1的时候,给1计数就行了,

最后测量1的个数是不是有n个,如果1有n个,那么结果为1,1小于n,那么结果就很明显了。

AC 代码

class Solution {
public:
    int repeatedNTimes(vector<int>& A) {
        int assumtp_num = A[0],assumtp_num_Count = 1;
        int temp_num,Count = 0;
        for (int i = 1; i < A.size(); ++i) {
            if(A[i]==assumtp_num)
                ++assumtp_num_Count;
            else{
                if(A[i]==temp_num)
                    ++Count;
                else{
                    if(Count==0){
                        Count = 1;
                        temp_num = A[i];
                    } else{
                        --Count;
                    }
                }
            }
        }
        //cout<<assumtp_num_Count<<endl;
        return assumtp_num_Count *2==A.size()?assumtp_num:temp_num;
    }
};

以上就是Go语言LeetCode题解961在长度2N的数组中找出重复N次元素的详细内容,更多关于Go题解长度2N数组重复元素的资料请关注脚本之家其它相关文章!

相关文章

  • Golang Gin框架实现文件下载功能的示例代码

    Golang Gin框架实现文件下载功能的示例代码

    本文主要介绍了Golang Gin框架实现文件下载功能的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • goquery 入门(安装使用教程)

    goquery 入门(安装使用教程)

    这篇文章主要为大家介绍了goquery 入门(安装使用)教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Golang中urlencode与urldecode编码解码详解

    Golang中urlencode与urldecode编码解码详解

    这篇文章主要给大家介绍了关于Golang中urlencode与urldecode编码解码的相关资料,在Go语言中转码操作非常方便,可以使用内置的encoding包来快速完成转码操作,Go语言中的encoding包提供了许多常用的编码解码方式,需要的朋友可以参考下
    2023-09-09
  • GoLang channel底层代码实现详解

    GoLang channel底层代码实现详解

    Channel和goroutine的结合是Go并发编程的大杀器。而Channel的实际应用也经常让人眼前一亮,通过与select,cancel,timer等结合,它能实现各种各样的功能。接下来,我们就要梳理一下GoLang channel底层代码实现
    2022-10-10
  • 1行Go代码实现反向代理的示例

    1行Go代码实现反向代理的示例

    这篇文章主要介绍了1行Go代码实现反向代理的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • golang xorm 自定义日志记录器之使用zap实现日志输出、切割日志(最新)

    golang xorm 自定义日志记录器之使用zap实现日志输出、切割日志(最新)

    这篇文章主要介绍了golang xorm 自定义日志记录器,使用zap实现日志输出、切割日志,包括连接postgresql数据库的操作方法及 zap日志工具 ,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • Go变量作用域代码实战详解

    Go变量作用域代码实战详解

    Go语言提供了几种不同的作用域类型,使得开发者可以灵活地控制变量的可见范围和生命周期,本章节将详细概述Go语言中变量的各种作用域,帮助读者更好地理解和应用这些概念,需要的朋友可以参考下
    2024-06-06
  • golang服务报错: write: broken pipe的解决方案

    golang服务报错: write: broken pipe的解决方案

    在开发在线客服系统的时候,看到日志里有一些错误信息,下面这篇文章主要给大家介绍了关于golang服务报错: write: broken pipe的解决方案,需要的朋友可以参考下
    2022-09-09
  • 一文详解Golang 定时任务库 gron 设计和原理

    一文详解Golang 定时任务库 gron 设计和原理

    这篇文章主要介绍了一文详解Golang 定时任务库 gron 设计和原理,gron是一个比较小巧、灵活的定时任务库,可以执行定时的、周期性的任务。gron提供简洁的、并发安全的接口
    2022-08-08
  • 使用client-go工具调用kubernetes API接口的教程详解(v1.17版本)

    使用client-go工具调用kubernetes API接口的教程详解(v1.17版本)

    这篇文章主要介绍了使用client-go工具调kubernetes API接口(v1.17版本),本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08

最新评论