数组中出现次数超过一半的数字

这篇具有很好参考价值的文章主要介绍了数组中出现次数超过一半的数字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

假设数组非空,并且一定存在满足条件的数字。

思考题

  • 假设要求只能使用 O(n)

的时间和额外 O(1)

  • 的空间,该怎么做呢?
数据范围

数组长度 [1,1000]

文章来源地址https://www.toymoban.com/news/detail-644105.html

样例
输入:[1,2,1,1,3]

输出:1
 代码:
class Solution {
public:
    int moreThanHalfNum_Solution(vector<int>& nums) {
        int cnt=0,val;      //cnt作为一个集合
        for(int i=0;i<nums.size();i++)
        {
            if(!cnt) val=nums[i],cnt++;     //如果集合为空,将下一个数作为主元素放入集合之中即可
            else if(nums[i]==val) cnt++;    //如果是与主元素相同,放入集合
            else cnt--;                     //如果不是主元素,这个数带走一个主元素
        }
        return val;
    }
};

到了这里,关于数组中出现次数超过一半的数字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每日一题——LeetCode1287.有序数组中出现次数超过25%的元素

    方法一 一次循环统计 题目给出的数据相同的元素都是相邻的,那么直接从头开始遍历,统计每种元素出现次数,当有元素次数超过arr.length/4即为要求的元素   消耗时间和内存情况: 方法二 方法一简化版 设步长step=arr.length/4,如果某个元素arr[i],跨越一个步长后arr[i+step],即

    2024年01月22日
    浏览(52)
  • 排序算法笔记--摩尔投票算法

    摩尔投票算法是一种用于在数组中查找出现次数超过一半的元素的有效算法。算法的核心思想是利用候选元素和计数器进行投票,通过消除不同元素之间的抵消来找到出现次数超过一半的元素。 如果数组中存在一个出现次数超过一半的元素,那么这个元素的剩余部分一定会抵

    2024年02月16日
    浏览(37)
  • 如何找到数组中出现指定次数的数字?

    一个数组中有一种数出现了奇数次, 其他数都出现了偶数次, 怎么找到这个种数? 在线OJ: LeetCode136. 只出现一次的数字 解题思路: 因为 a ^ a = 0 , 所以出现过偶次的数异或结果都是 0 , 又因为 0^a=a , 所以把数组中所有的数进行 异或 以后的结果, 就是出现了奇数次的那个数. 代码实

    2024年02月06日
    浏览(38)
  • 剑指 Offer 56 - I. 数组中数字出现的次数

    理想的人物不仅要在物质需要的满足上,还要在精神旨趣的满足上得到表现。        —— 黑格尔 目录 方法1:排序+指针 方法2:异或整个数组 题目: 一个整型数组  nums  里除两个数字之外,其他数字都出现了 两次 。请写程序找出这两个 只出现一次的数字。 要求时间复

    2023年04月16日
    浏览(37)
  • 剑指 Offer 56 - II. 数组中数字出现的次数 II(位运算 / 哈希表 / 排序)

    链接:剑指 Offer 56 - II. 数组中数字出现的次数 II 难度:中等 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例 1: 输入:nums = [3,4,3,3] 输出:4 示例 2: 输入:nums = [9,1,7,9,7,9,7] 输出:1 限制: 1 = nums.length = 10000 1

    2024年02月13日
    浏览(41)
  • Practice1|1207. 独一无二的出现次数、1365. 有多少小于当前数字的数字、941. 有效的山脉数组

    1.题目: 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。 示例 1: 输入:arr = [1,2,2,1,1,3] 输出:true 解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现

    2024年02月15日
    浏览(40)
  • 嵌套列表,与摩尔投票进阶

    0.请问 == 运算符和 is 运算符有什么区别呢? 在Python中==运算符用于比较两个变量的值是否相等,而is运算符用于判断两个变量引用对象是否为同一个,即所引用的对象的内存地址是否一致。 1.请问下面代码的执行结果是? 执行错误结果为 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] ,正确结果

    2023年04月17日
    浏览(34)
  • 169. 多数元素(摩尔投票法) 题解

    给定一个大小为  n   的数组  nums  ,返回其中的多数元素。多数元素是指在数组中出现次数  大于   ⌊ n/2 ⌋  的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 : 可以使用摩尔投票算法(Boyer-Moore Voting Algorithm)来解决这个问题,它是解决这

    2024年02月12日
    浏览(35)
  • C++统计数字中某数字出现的次数

    2024年02月16日
    浏览(35)
  • JS操作数组神器——reduce(求和、出现次数、去重、分类)

    reduce() 对数组每个元素执行一次由您提供的reduce函数(升序执行),将其结果汇总为单个返回值。 循环遍历能做的,reduce都可以做。比如数组根据元素某个属性求和、数组元素出现次数、数组去重、数组根据某个元素属性分类等等。 参数介绍 prev 必需。累计器累计回调的返回值

    2023年04月26日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包