技巧--75. 颜色分类/medium 理解度C

75. 颜色分类

  • 1、题目
  • 2、题目分析
  • 3、复杂度最优解代码示例
  • 4、适用场景

1、题目

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

 

示例 1:

输入:nums = [3,2,3]
输出:3

示例 2:

输入:nums = [2,2,1,1,1,2,2]
输出:2

 

提示:
  • n == nums.length
  • 1 <= n <= 5 * 104
  • -109 <= nums[i] <= 109

 

进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。

Related Topics
  • 数组
  • 哈希表
  • 分治
  • 计数
  • 排序

2、题目分析

求多数元素,即哪个元素个数大于数组长度的 ⌊n/2⌋。此时可以用摩尔投票算法(由摩尔在1981年提出,该算法的主要目标是在无序且候选人数不固定的情况下,有效地找出出现次数超过总数量一半的元素。这种算法的时间复杂度为O(n),空间复杂度为O(1),其中n是数组的大小。)

首先我们初始化候选人=0,所得票数=0。
然后遍历数组,(每次遍历都是明确候选人,再处理候选人票数)

  1. 若此时票为空,则当前元素为候选人。
  2. 将候选人和当前元素对比,若相同,则票数+1;否则,票数-1(不同候选人的票数是相互抵消的,以保证若确实存在某元素个数大于数组长度的 ⌊n/2⌋,则最终被选出来的候选人一定是该元素)

3、复杂度最优解代码示例

    public int majorityElement(int[] nums) {// 初始化候选人和所得票数int candidate = 0;int count = 0;for (int num : nums) {if (count == 0) {// 如果票数为空,证明此时没有候选人,重置候选人为当前元素candidate = num;}// 如果候选人和当前元素一致,则候选人票数+1,否则-1count += (candidate == num) ? 1 : -1;}return candidate;}

4、适用场景

多数元素算法在处理数据压缩、模式识别、数据库查询等领域具有广泛的应用,以下是具体的适用场景:

数据压缩:多数元素算法可以用于寻找文件或数据中的重复部分,从而进行高效的数据压缩。例如,在文本文件中,出现频率最高的单词或字符可以被编码为一个指针,指向该单词或字符在文件中的一个位置,大大减少了存储空间的需求。

模式识别:在图像处理和语音识别等领域,多数元素算法可以用来检测图像或声音中出现频率最高的模式。例如,在人脸识别中,多数颜色值可能代表人脸的主要颜色,从而有助于后续的特征提取和分类。

数据库查询:在关系型数据库中,多数元素算法可以用于优化查询操作。例如,如果某个查询返回的结果集中,某一列的值出现次数最多,那么数据库可以利用这一信息,只返回该列的值,而不是整个结果集,从而提高查询效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode刷题日记

LeetCode刷题日记 HashMap 第1题----两数之和 原题地址 [https://leetcode.cn/problems/two-sum/]: 解题思路&#xff1a; 将数组中每个元素通过两次遍历使两数之差target&#xff0c;最后由结果target得到对应数组下标。此时算法的时间复杂度为O(n^2)。故而放弃此方法。 由于…

Flink对接Kafka的topic数据消费offset设置参数

scan.startup.mode 是 Flink 中用于设置消费 Kafka topic 数据的起始 offset 的配置参数之一。 scan.startup.mode 可以设置为以下几种模式&#xff1a; earliest-offset&#xff1a;从最早的 offset 开始消费数据。latest-offset&#xff1a;从最新的 offset 开始消费数据。…

thinkphp5实战之phpstudy v8环境搭建,解决Not Found找不到路径问题

引言 thinkphp以快速、简约的大道至简的思想广受欢迎&#xff0c;适合开发小型项目。本地环境下&#xff0c;phpstudy v8是一款比较优秀的集成环境软件。部署完项目后&#xff0c;访问的时候傻眼&#xff0c;报错。 解决方案 不要慌&#xff0c;这个是伪静态的原因。选择apach…

Kong关键概念 - 服务(Services)

服务&#xff08;Services&#xff09; 在Kong Gateway中&#xff0c;服务是代表外部上游&#xff08;upstream&#xff09;API或微服务的实体。例如&#xff0c;数据转换微服务、计费API等。 服务的主要属性是其URL。您可以使用一个字符串来指定URL&#xff0c;或者通过分别…

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter 0. 背景1. 安装 docker-ce2. 安装 NVIDIA Container Toolkit3. 使用 nvidia-ctk 命令配置容器运行4. 通过 docker 运行 nvidia-smi5. 运行 gpu-jupyter6. 访问 gpu-jupyter7. 测试 gpu-jupyter 是否可以访问 cuda 0. 背景 今天突…

Vue3的ref和reactive

目录 1、ref的基本使用 2、reactive的基本使用 3、ref操作dom 4、ref与reactive的异同 1、ref的基本使用 ref创建数据可以是基本类型也可以是引用类型 ref函数创建响应式数据&#xff0c;返回值是一个对象 模版中使用ref数据,省略.value&#xff0c;js代码中不能省略 获…

i18n多国语言Internationalization的动态实现

一、数据动态的更新 在上一篇i18n多国语言Internationalization的实现-CSDN博客&#xff0c;可能会遇到一个问题&#xff0c;我们在进行英文或中文切换时&#xff0c;并没有办法对当前的数据进行动态的更新。指的是什么意思呢&#xff1f;当前app.js当中一个组件内容&#xff…

Go语言学习笔记:基础语法和类型

Go语言学习笔记&#xff1a;基础语法和类型 目录 Go语言学习笔记&#xff1a;基础语法和类型学习路线前言变量声明常量数据类型布尔型&#xff08;Boolean&#xff09;整型&#xff08;Integer&#xff09;浮点型&#xff08;Floating point&#xff09;复数型&#xff08;Comp…

LeetCode.2765. 最长交替子数组

题目 2765. 最长交替子数组 分析 为了得到数组 nums 中的最长交替子数组的长度&#xff0c;需要分别计算以每个下标结尾的最长交替子数组的长度。为了方便处理&#xff0c;计算过程中需要考虑长度等于 1 的最长交替子数组&#xff0c;再返回结果时判断最长交替子数组的长度…

【代码整理】COCO格式数据集画框

可以用于排查数据集转化后可能出现的坐标错误&#xff0c;类别不对齐等需要可视化才能发现的问题 import部分 from pycocotools.coco import COCO import numpy as np import os from PIL import Image from matplotlib.collections import PatchCollection from matplotlib.…

详细分析Java中的Date类以及格式转换

目录 前言1. 基本知识2. 格式化输出3. 格式转换 前言 记录这篇文章的缘由&#xff0c;主要是涉及一个格式转换&#xff0c;对此深挖了这个类 在Java中&#xff0c;Date类是用于表示日期和时间的类。 位于java.util包中&#xff0c;是Java平台中处理日期和时间的基本类之一。…

路由器结构

路由器是连接互联网的设备&#xff0c;本文主要描述路由器的结构组成。 如上所示&#xff0c;OSI&#xff08;Open System Interconnect&#xff09;开放系统互联参考模型是互联网架构的标准协议栈&#xff0c;由ISO标准组织制定。自底向上&#xff0c;互联网架构分为7层&#…

服务器与Ajax

1.初识Ajax Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 术语ajax最早产生于2005年&#xff0c;Ajax表示Asynchronous JavaScript and XML(异步JavaScript和XML)&#xff0c;但是它不是像HTML、JavaScript或CSS这样的一种“正式的”技…

从零开始:Ubuntu Server中MySQL 8.0的安装与Django数据库配置详解

Ubuntu系统纯净安装MySQL8.0 1、安装Mysql8.0 sudo apt install mysql-server2、检查MySQL状态 sudo systemctl status mysql如下所示看见Active: active (running)说明mysql状态正常 ● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql…

Docker镜像操作

镜像名称 镜名称一般分两部分组成&#xff1a;[repository]:[tag]。 在没有指定tag时&#xff0c;默认是latest&#xff0c;代表最新版本的镜像。 这里的mysql就是repository&#xff0c;5.7就是tag&#xff0c;合一起就是镜像名称&#xff0c;代表5.7版本的MySQL镜像。 镜像…

svn checkout 无法使用,没有响应 svn: E170013

在linux mint 下使用 svn&#xff0c; 配合vscode SVN 插件。 一直没出现过问题。 这次在 Mac mini 上使用就是一直链接&#xff0c;最后超时 time out 。 当然ping ip 也是超时。 svn: E170013: Unable to connect to a repository at URL svn://192.168.0.220/project svn…

YOLOv8改进 | 损失函数篇 | QualityFocalLoss质量焦点损失(含代码 + 详细修改教程)

一、本文介绍 本文给大家带来的改进机制是QualityFocalLoss,其是一种CLS分类损失函数,它的主要创新是将目标的定位质量(如边界框与真实对象的重叠度量,例如IoU得分)直接融合到分类损失中,形成一个联合表示。这种方法能够解决传统目标检测中分类与定位任务之间存在的不一…

计算机网络(第六版)复习提纲7

SS2.4 信道复用技术&#xff08;填空简答&#xff09; 1.信道复用概念&#xff1a; a)复用&#xff1a;允许用户使用一个共享信道进行通信&#xff0c;发送方复用&#xff08;多合一&#xff09;&#xff0c;接收方分用&#xff08;一分多&#xff09; 2.频分复用FDM&#xff1…

js组合继承例子和优缺点

JavaScript中的组合继承是一种将原型链继承和拷贝继承结合起来实现继承的方式。它通过拷贝继承将父类的属性和方法复制到子类中&#xff0c;并利用原型链继承实现多态性和继承链。 下面是一个组合继承的例子&#xff1a; function Parent() { this.name Parent; } Parent.…

Sentinel限流规则支持流控效果

流控效果是指请求达到流控阈值时应该采取的措施&#xff0c;包括三种&#xff1a; 1.快速失败&#xff1a;达到阈值后&#xff0c;新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。 2.warm up&#xff1a;预热模式&#xff0c;对超出阈值的请求同样是拒绝并抛…