当前位置: 首页 > article >正文

力扣 多数元素

用了排序跟抵消。

题目

由题可知,多数元素是指在数组中出现次数大于一半的元素,且总是存在多数元素。不难想到,把数组排序后,这个数组的中间数一定是这个要找的元素。

用了sort排序,时间复杂度O(nlogn),空间复杂度O(1)。

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

然后,也可以用抵消的思路,类似投票候选人,记要找的元素为1,其它元素为-1,这样累加下来肯定是为1的,然后就是通过前面几个数作抵消,当剩余那个数即找到候选人,也是要找的元素了。

时间复杂度O(n),空间复杂度O(1),相对更快一点。

class Solution {
    public int majorityElement(int[] nums) {
            int count = 0, candidate = 0;
    for (int num : nums) {
        if (count == 0) {
            candidate = num;
        }
        count += (num == candidate) ? 1 : -1;
    }
    return candidate;
  }  
}

一题多解,转变思路很重要。 

 


http://www.kler.cn/a/387324.html

相关文章:

  • Oracle OCP认证考试考点详解082系列16
  • 河南省的一级科技查新机构有哪些?
  • 从0开始深度学习(28)——序列模型
  • C++笔记---异常
  • LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略
  • 【C/C++】CreateThread 与 _beginthreadex, 应该使用哪一个?为什么?
  • Debezium系列之:Debezium3版本增量快照和只读增量快照应用的变化
  • javascript五子棋小游戏,基于div+canvas的五子棋小游戏
  • 智慧水库数字孪生系统解决方案
  • HTB:Sightless[WriteUP]
  • Science Robotics 综述揭示演化研究新范式,从机器人复活远古生物!
  • 蓝桥杯-网络安全比赛(6)基础学习-JavaScript 原型链污染
  • Golang进阶
  • 【数据结构】插入排序——直接插入排序 和 希尔排序
  • Java项目实战II基于Spring Boot的疗养院管理系统设计与实现(开发文档+数据库+源码)
  • 【详细 工程向】基于Smart3D的五镜头相机三维重建
  • phpstudy 使用php8.2.9版本报错问题
  • 基于物联网的公共街道照明系统设计与构建
  • [含文档+PPT+源码等]精品基于Python实现的django房屋出租系统的设计与实现
  • 【汇编语言】[BX]和loop指令(三)—— Debug与masm的指令处理差异与loop,[bx]的联合应用
  • 单元测试、集成测试、系统测试有什么区别
  • css多列布局用法
  • 什么是Java,有什么特点
  • 【C知道】CSS3重要特性。
  • Hadoop集群的高可用(HA)- (1、搭建namenode的高可用)
  • 算法 -选择排序