《LeetCode刷题》—169. 多数元素

简介: 《LeetCode刷题》—169. 多数元素

《LeetCode刷题》—169. 多数元素

一、题目内容

原题连接:https://leetcode.cn/problems/majority-element/

题目:

在这里插入图片描述

二、个人答案(Java)

思路:先判断是否为一个元素,是就直接输出,不是就进行下面操作:1.排序 2.遍历数组判断前后元素相同的次数,用一个遍历a去记录,当a+1大于了题目要求的n+1之和就输出该元素,(相同的次数+1才等于出现的次数,比如【2,2,1,1,1,2,2】,排序后为【1,1,1,2,2,2,2】,第一个2和第二个相同2,第二个2和第三个2相同,第三个2和第4个2相同,这是相同总次数为3次,元素出现次数则为4次)

在这里插入图片描述

代码:

class Solution22 {
    public int majorityElement(int[] nums) {
        //如果只有一个元素就直接输出这个元素
        if (nums.length==1){
            return nums[0];
        }
        //先排序
        Arrays.sort(nums);
        //a值来确定啥时候终止循环
        int a=0;
        //遍历数组
        for (int i = 1; i <nums.length ; i++) {
            //如果当前元素和前一个元素相同则a+1,出现了不相同就a归零
            if (nums[i]==nums[i-1]){
                a++;
            }else {
                a=0;
            }
            //每次循环都判断a值是不是比nums.length/2-1小,这里因为计算出来的a值是元素出现的总次数-1,所以比较值也减一
            //循环的时候改变a的值相当于是相同元素的次数(注意是次数),但是这种计算方式没有计算该元素第一次出现,也就是他本身,所以出现的次数其实要加一,这里就移到不等号右边,减一了
            if (a>nums.length/2-1){
                return nums[i];
            }
;       }
        return 0;
    }
}

三、官方答案(Java)

这个题官方解题方法很多,这里放一样先排序的方法,应该也是最简方法

方法一:排序

思路:如果将数组 nums 中的所有元素按照单调递增或单调递减的顺序排序,那么下标为[n/2] 的元素(下标从 0 开始)一定是众数。

在这里插入图片描述

代码:

class Solution {
    public int majorityElement(int[] nums) {
        Arrays.sort(nums);
        return nums[nums.length / 2];
    }
}

答案来源:

作者:LeetCode-Solution
链接:https://leetcode.cn/problems/majority-element/solution/duo-shu-yuan-su-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
1月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
35 1
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
1月前
【LeetCode 27】347.前k个高频元素
【LeetCode 27】347.前k个高频元素
32 0
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
114 2
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
16 1
|
2月前
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
1月前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
29 0
|
1月前
【LeetCode-每日一题】移除元素
【LeetCode-每日一题】移除元素
31 0
|
3月前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
3月前
|
算法 索引
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
这篇文章介绍了LeetCode第34题"在排序数组中查找元素的第一个和最后一个位置"的解题方法,通过使用双指针法从数组两端向中间同时查找目标值,有效地找到了目标值的首次和最后一次出现的索引位置。
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置