首页 > 其他分享 >力扣---剑指 Offer 39. 数组中出现次数超过一半的数字

力扣---剑指 Offer 39. 数组中出现次数超过一半的数字

时间:2023-04-12 21:13:04浏览次数:42  
标签:count 39 shu nums int res Offer --- 数组

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2
 
限制:
1 <= 数组长度 <= 50000

注意:本题与主站 169 题相同:https://leetcode-cn.com/problems/majority-element/


来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


 

三种思路。

1. 由于题目保证有答案,所以将数组排序后,处于中间的必定是答案。

2. 使用哈希表进行计数,当某个数出现的次数大于数组长度的一半后,直接返回该数即可。

3. 可以将所有不相同的数两两进行抵消,最后剩下的必定是答案。(参考随机一换一,人数多的必定留到最后)

前两种方法太简单,不写了,这里直接给第三种。

class Solution {
    public int majorityElement(int[] nums) {
        int res = nums[0];
        int count = 0;
        for (int i = 0; i < nums.length; i ++) {
            if (res == nums[i]) {
                count ++;
            } else {
                count --;
                if (count == 0) {
                    // 由于题目保证答案存在,所以这里不需要考虑越界问题。
                    res = nums[i + 1];
                }
            }
        }
        return res;
    }
}

 

标签:count,39,shu,nums,int,res,Offer,---,数组
From: https://www.cnblogs.com/allWu/p/17311255.html

相关文章

  • java -- 二维数组
    基本概念在Java中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。创建及初始化//创建方式和数组相似第一个中括号表示行,第二个中括号表示列//......
  • 4-20ma输入0-10v输出模拟量电流转换电压隔离模块
    主要特性:⑴精度等级:0.1级、0.2级、0.5级。产品出厂前已检验校正,用户可以直接使用⑵辅助电源:5V/12V/15V/24VDC或者220VAC(范围±10%)⑶国际标准二路信号输入:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等⑷二路输出标准信号:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等,具有高负载能力⑸全量......
  • 05-分布式通信
    一、Netty和网络通信(一)Netty框架简介​1、BIO​存在性能问题、可靠性问题、可维护性问题​​BIO的核心问题是同步阻塞publicvoidservice()throwsIOException{ServerSocketserverSocket=newServerSocket(port);......
  • 结对编程---四则运算
    目录一、实验目的二、实验内容三、实验代码四、实验结果五、实验心得一、实验目的通过两位同学组队用结对编码(两位位同学轮流coding,另一个同学在旁边审核代码)的方式完成本次实验。本次实验需要设计一个四则运算练习题的随机出题程序,可以通过C/C++/Java/Python等语言进......
  • PVS-Studio分析
    PVS-Studio是一个静态代码扫描工具,还不错。先通过dnspy调试主进程可以发现检查授权文件的的进程是一个子进程,如:PVS-Studio.exe--checkreg=yes--lic-file="D:\pvs.lic"因此要解决授权问题,核心应该是调试PVS-Studio.exe这个进程。通过命令行分析我们可以知道该进程肯定是要读......
  • 今日报告-51
    今日打卡所花时间(包括上课):2h代码量(行):100发表博客:1篇(不包括本篇)学习进度和了解到的知识点:今天开了scrum项目冲刺会议,具体探讨了我们之后的规划,前端开发,调用接口等任务。......
  • python习题-筛法求素数
    【题目描述】用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数。【基本思想】用筛法求素数的基本思想是:把从2到N的一组正整数从小到大按顺序排列。从中依次删除2的倍数、3的倍数、5的倍数,直到根号N的倍数为止,剩余的即为2~N之间的所有素数。【源代码程序】defsie......
  • 63、K8S-使用K8S部署Prometheus、grafana
    Kubernetes学习目录1、准备工作1.1、教程Github地址https://github.com/prometheus-operator/kube-prometheus.git1.2、下载编写好的yamlwgethttps://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.12.0.tar.gz1.3、解压项目代码tarxvfkub......
  • CentOS系统使用docker-compose安装Doris数据库
    doris当前最新版本为1.2.31、docker与docker-compose安装    docker安装:CentOS安装Docker   docker-compose安装:docker-compose安装与使用2、doris相关下载   1)doris-be、doris-fe2) 3、修改vi/etc/security/limits.conf添加如下信息:*softnofile65......
  • Go微服务框架go-kratos实战学习08:负载均衡基本使用
    微服务框架go-kratos中负载均衡使用一、介绍在前面这篇文章负载均衡和它的算法介绍,讲了什么是负载均衡以及作用、算法介绍。go-kratos的负载均衡主要接口是Selector,它是一个可插拔的设计。因为它设计的都是接口,只要实现了接口就实现了负载均衡。go-kratos在目录下提供了......