169. 多数元素

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

题目

169. 多数元素,# 简单题,力扣,python,开发语言

题解一:map集合计数

 /**
     * map集合计数
     * @param nums
     * @return
     */
    public static int majorityElement(int[] nums) {


        Map<Integer, Integer> map = new HashMap<>();

        //第一个for循环将数组中的元素作为key   出现次数作为value存入map  并且key重复  就value+1
        for (int i = 0; i < nums.length; i++) {

            if (map.containsKey(nums[i])) {
                map.put(nums[i], (map.get(nums[i]))+1);
            }else {
                map.put(nums[i],1);
            }
        }
        int maxKey = 0;   //记录最大value的key
        int maxValue =Integer.MIN_VALUE; //记住最大value

        //取出map集合最大的value
        for (Map.Entry<Integer,Integer> entry:map.entrySet()){
            int value = entry.getValue();
            if (value > maxValue) {
                maxValue = value;
                maxKey = entry.getKey();
            }
        }
        return maxKey;

    }

题解二:摩尔投票法思路

原理就是互相抵消,最后肯定是元素数量多的那个元素票数不为0
169. 多数元素,# 简单题,力扣,python,开发语言文章来源地址https://www.toymoban.com/news/detail-608459.html

/**
     *摩尔投票法思路
     * @param nums
     * @return
     */
    public static int majorityElement(int[] nums) {

        //默认候选人为第一个元素
        int candidate = nums[0];
        //默认切换候选人的票数为  1
        int count = 1;

        for (int i = 1; i < nums.length; i++) {

            //若元素相同  票数+1
            if (nums[i] == candidate) {
                count++;
            }else if(count > 0){//若元素不相同  票数-1
                count--;
            }

            if (count == 0){//若元素票数为0  换候选人  重置票数
                candidate = nums[i];
                count = 1;
            }

        }
        return candidate;

    }

到了这里,关于169. 多数元素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【LeetCode】169. 多数元素

    169. 多数元素 摩尔投票法 :在一个群体里面,哪个数最多

    2024年02月13日
    浏览(22)
  • Leetcode:【169. 多数元素】

    题目  给定一个大小为  n   的数组  nums  ,返回其中的多数元素。多数元素是指在数组中出现次数  大于   ⌊ n/2 ⌋  的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 难度: 简单 题目链接:169. 多数元素 示例 1: 示例 2: 提示: n == nums.length

    2024年02月09日
    浏览(25)
  • leetcode 169. 多数元素

            本题我的思路是将数组nums中的元素以及其出现次数保存至一个哈希表hashMap中,然后找到哈希表中大于 ⌊n/2⌋ 的value值,并返回对应的key即可。 java代码如下:

    2024年02月06日
    浏览(28)
  • 169. 多数元素(摩尔投票法) 题解

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

    2024年02月12日
    浏览(25)
  • int[]数组转Integer[]、List、Map「结合leetcode:第414题 第三大的数、第169题 多数元素 介绍」

    输出: 众所周知,将普通数组转为List集合,可以通过JDK提供的诸多方法来减轻我们的编码负担,所以接下来小名借用两个leetcode题中的场景来分享下数组转集合的使用方法: 看到开头的 「int[ ]转Integer[ ]」 可能有的小伙伴并不知道什么情况会用。当然平日开发我们断然不会

    2024年02月14日
    浏览(37)
  • 环形链表_相交链表_多数元素(java语言)

    力扣141题 问题: 思路:创建hashset,把链表的每个节点放到集合中,在放入的过程中检查这个节点是否已经存在,存在则证明存在环。 代码实现: 力扣160题 问题: 思路:先把其中一个链表的结点都放到一个hashset中,然后检索hashset,看是否包含这个节点,如果包含,则证明

    2023年04月15日
    浏览(29)
  • 力扣238和169

    思路一: 思路二:

    2024年02月21日
    浏览(20)
  • 面试经典 150 题 - 多数元素

    给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums = [3,2,3] 输出:3 示例 2: 输入:nums = [2,2,1,1,1,2,2] 输出:2 进阶:尝试设计时间复

    2024年01月23日
    浏览(30)
  • 移除元素(双指针) Python 力扣

    目录 题目描述 代码展示 知识点分析 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新

    2024年02月07日
    浏览(42)
  • C语言力扣简单题-两数之和

     (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答

    2024年02月02日
    浏览(25)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包