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

【力扣-多数元素 JAVA/Python】

题目描述

在这里插入图片描述

解题思路:

数组中出现次数超过一半的数字
有两种解法:
1、把数组排序,中位数一定是众数
2、Boyer-Moore 投票算法: 票数正负抵消,时间O(N) 空间复杂度O(1) 所以用这个解法最合适。

🔍 举例

数组:[2,2,1,1,1,2,2]

初始:candidate=2, count=1

遍历:

  • 遇到 2 → 相同 → count=2

  • 遇到 1 → 不同 → count=1

  • 遇到 1 → 不同 → count=0 → 换候选人 = 1, count=1

  • 遇到 1 → 相同 → count=2

  • 遇到 2 → 不同 → count=1

  • 遇到 2 → 不同 → count=0 → 换候选人 = 2, count=1

  • 最后 candidate=2,它就是多数元素 ✅

流程图如下:

在这里插入图片描述

代码如下:

python版本

class Solution(object):def majorityElement(self, nums):""":type nums: List[int]:rtype: int"""count = 0person = Nonefor i in range(len(nums)):if count == 0:person = nums[i]count = 1elif person == nums[i]:count += 1else:count -= 1return person                

java版本

class Solution {public int majorityElement(int[] nums) {int count  = 1, person = nums[0];for(int i = 1; i < nums.length ; i ++){if(count == 0){person =  nums[i];count = 1;}else if(nums[i] == person){count++;}else{count--;}}return person;}
}
http://www.dtcms.com/a/335290.html

相关文章:

  • CD4+ T细胞激活区分抗PD-L1联合抗CTLA4疗法与单药抗PD-L1治疗的响应差异-空间最近邻分析
  • 民法学学习笔记(个人向) Part.5
  • 【最后203篇系列】032 OpenAI格式调用多模型实验
  • 39.离散化与哈希
  • 数据结构:二叉树的遍历 (Binary Tree Traversals)
  • 杂记 03
  • v-scale-scree: 根据屏幕尺寸缩放内容
  • 基于Python的电影评论数据分析系统 Python+Django+Vue.js
  • 防御保护12-14
  • tmux常用命令
  • Flamingo
  • KingbaseES主备读写分离集群安装教程
  • 字节数据流
  • 北汽新能源半年报:双品牌战略拉动销量增长,多元布局促进转化
  • PIDGen!DecodeProdKey函数分析之四个断点
  • 【大模型应用开发 3.RAG技术应用与Faiss向量数据库】
  • 【leetcode】12. 整数转罗马数字
  • 关于“双指针法“的总结
  • 【Python】Python爬虫学习路线
  • “openfeign“调用接口上传文件报错:Failed to deleted temporary file used for part [file]
  • c++11扩展(c++11并发库)
  • 在职老D渗透日记day18:sqli-labs靶场通关(第26关)get报错注入 过滤or和and基础上又过滤了空格和注释符 ‘闭合 手动注入
  • echarts 画一个饼图,并且外围有一个旋转动画
  • linux下程序运行一段时间无端崩溃/被杀死,或者内存占用一直增大。linux的坑
  • 11.web api 2
  • 模式匹配自动机全面理论分析
  • AI短视频爆火?记录AIGC在影视制作场景的实践教程
  • 大模拟 Major
  • 随机整数列表处理:偶数索引降序排序
  • jd-hotkey探测热点key