力扣每日一练(24-1-16)

news2024/9/24 6:13:45

我一开始想到的是,如果数字相同则加一。

然而,对了一点点,而已。

高手的方法不是普通人在几分钟内能想得出来的,hh

继续补充:

如果数字不同则减一,如果计数到达了0,则更新数字,最终更新并留存下来的数字即为“多数人”

以上就是Boyer-Moore投票算法!

它的基本思想是,每次从序列里选择两个不相同的数字删除掉(或称为“抵消”),最后剩下的数字就是出现次数大于总数一半的数字。

Python:

def majorityElement(nums):
    count = 0
    candidate = None

    for num in nums:
        if count == 0:
            candidate = num
        count += (1 if num == candidate else -1)

    return candidate

   candidate变量用于保存当前的候选多数元素,count变量用于保存candidate的出现次数。遍历数组中的每个元素,如果count为0,就将candidate设置为当前元素;然后,如果当前元素等于candidate,就将count加1,否则将count减1。最后,candidate就是多数元素。

        "Boyer-Moore"是两位计算机科学家的姓氏,Robert S. Boyer和J Strother Moore。他们共同发明了Boyer-Moore字符串搜索算法,这是一种高效的字符串搜索算法。

        可以用于在数组中找出多数元素。

C#

public int MajorityElement(int[] nums) {
    int count = 0;
    int? candidate = null;

    foreach (int num in nums) {
        if (count == 0) {
            candidate = num;
        }
        count += (num == candidate) ? 1 : -1;
    }

    return candidate.Value;
}

秀了个杂技:

        在C#中,int?是一个可空类型,它可以包含一个有效的int值,也可以包含null。这与Python中的None类似。在这个例子中,我们使用int?类型的candidate变量来保存当前的候选多数元素,初始值为null

        当我们确定了多数元素并准备返回结果时,我们需要从candidate变量中获取其int值。在C#中,我们使用.Value属性来获取可空类型变量的值。如果candidatenull,访问.Value属性会抛出InvalidOperationException异常。但在这个问题中,我们可以假设数组总是存在多数元素,所以candidate永远不会为null,访问.Value属性总是安全的。

        所以,我们返回的是candidate.Value,而不是candidate

        其实没什么卵用,在这里来说,用int candidate = 0;是一点问题没有的。

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

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

相关文章

【极光系列】springboot集成redis

【极光系列】springboot集成redis tips:主要用于快速搭建环境以及部署项目入门 gitee地址 直接下载源码可用 https://gitee.com/shawsongyue/aurora.git模块:aurora_rediswindow安装redis安装步骤 1.下载资源包 直接下载解压:https://pa…

PHP项目如何自动化测试

开发和测试 测试和开发具有同等重要的作用 从一开始,测试和开发就是相向而行的。测试是开发团队的一支独立的、重要的支柱力量。 测试要具备独立性 独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具。没有…

华硕原厂系统天选5Pro原厂Win11系统恢复安装过程方法

华硕原厂系统天选5Pro原厂Win11系统恢复安装过程方法 华硕原厂系统枪神8/枪神8plus原厂Win11系统恢复安装过程方法 还是老规矩,分3种安装方法 远程恢复安装:https://pan.baidu.com/s/166gtt2okmMmuPUL1Fo3Gpg?pwdm64f 提取码:m64f 支持型号&#x…

new Handler(getMainLooper())与new Handler()的区别

Handler 在Android中是一种消息处理机制。 new Handler(); 创建handler对象,常用在已经初始化了 Looper 的线程中调用这个构造函数(即非主线程),如果感觉不好理解,可以把Handler handler new Handler() 理解为常用在…

Vue3中使用自定义指令

一,自定义指令: 应用场景:禁用按钮多次点击 1.vue2 a. src/libs/preventClick.js import Vue from vue const preventClick Vue.directive(preventClick, {inserted: function (el, binding) {el.addEventListener(click, () > {if (!el…

MySQL多表查询(改进版)

1.创建student和score表 mysql> CREATE TABLE student (-> id INT(10) NOT NULL UNIQUE PRIMARY KEY ,-> name VARCHAR(20) NOT NULL ,-> sex VARCHAR(4) ,-> birth YEAR,-> department VARCHAR(20) ,-> address VARCHAR(50)-> ); Query O…

C#用double.TryParse(String, Double)方法将字符串类型数字转换为数值类型

目录 一、定义 二、实例 命名空间: System 程序集: System.Runtime.dll 一、定义 将数字的字符串表示形式转换为它的等效双精度浮点数。 一个指示转换是否成功的返回值。 public static bool TryParse (string? s, out double result…

Rust-所有权和移动语义

什么是所有权 拿C语言的代码来打个比方。我们可能会在堆上创建一个对象,然后使用一个指针来管理这个对象: Foo *p make_object("args");接下来,我们可能需要使用这个对象: use_object(p);然而,这段代码之…

初识OpenCV

首先你得保证你的虚拟机Ubuntu能上网 可看 http://t.csdnimg.cn/bZs6c 打开终端输入 sudo apt-get install libopencv-dev 回车 输入密码 回车 遇到Y/N 回车 OpenCV在线文档 opencv 文档链接 点zip可以下载,点前面的直接在线浏览,但是很慢 https…

AI嵌入式K210项目(3)-GPIO控制

文章目录 前言一、背景知识二、背景知识二、开始你的表演代码实现 总结 前言 前面介绍了开发板和环境搭建的基本情况,接下来我们开始学习使用C进行裸板开发,本节课先来学习下K210最基础的功能,引脚映射和点灯。 在开始具体学习之前&#xff…

跟着cherno手搓游戏引擎【4】窗口抽象、GLFW配置、窗口事件

引入GLFW: 在vendor里创建GLFW文件夹: 在github上下载,把包下载到GLFW包下。 GitHub - TheCherno/glfw: A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input修改SRC/premake5.lua的配置:12、13、15、36…

多云架构下的点击流数据分析

在出海的大趋势下,需要对点击流数据进行分析,以便更快的确定客户。作为多家云厂商的合作伙伴,九河云将提供点击流数据分析的改良方案。 对于这个需求可以借助aws的受众细分和定位解决方案,您可以应用基于云的分析和机器学习来减少…

Seaborn——可视化的具体API应用

一、Seaborn概述 Seaborn 是基于 matplotlib的图形可视化 python包。提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。 Seaborn在 matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seab…

高可用架构去中心化重要?

1 背景 在互联网高可用架构设计中,应该避免将所有的控制权都集中到一个中心服务,即便这个中心服务是多副本模式。 对某个中心服务(组件)的过渡强依赖,那等同于把命脉掌握在依赖方手里,依赖方的任何问题都可…

kafka学习笔记-- 文件清理策略与高效读写数据

本文内容来自尚硅谷B站公开教学视频,仅做个人总结、学习、复习使用,任何对此文章的引用,应当说明源出处为尚硅谷,不得用于商业用途。 如有侵权、联系速删 视频教程链接:【尚硅谷】Kafka3.x教程(从入门到调优…

机器学习学习笔记(吴恩达)(第三课第一周)(无监督算法,K-means、异常检测)

欢迎 聚类算法: 无监督学习:聚类、异常检测 推荐算法: 强化学习: 聚类(Clustering) 聚类算法:查看大量数据点并自动找到彼此相关或相似的数据点。是一种无监督学习算法 聚类与二院监督…

如何使用服务器?

文章目录 如何使用服务器?一、工具二、第一种方法三、第二种方法四、实例 个人经验 如何使用服务器? 本文详细介绍了如何利用服务器跑模型,具体流程如下: 一、工具 ToDeskPyCharm Professional移动硬盘JetBrains GatewayGit 二…

微信小程序------WXML模板语法之条件渲染和列表渲染

目录 前言 一、条件渲染 1.wx:if 2. 结合 使用 wx:if 3. hidden 4. wx:if 与 hidden 的对比 二、列表渲染 1. wx:for 2. 手动指定索引和当前项的变量名* 3. wx:key 的使用 前言 上一期我们讲解wxml模版语法中的数据绑定和事件绑定(上一期链接:…

溯源阿里巴巴的中台架构

明朝可以说是中国封建王朝中最后一个由汉人统治的王朝,就算是最后清王朝也是不断的学习汉人的治国方略,但是学习最多的当然是明朝。 其实阿里巴巴的中台战略其实和明朝的历史还是蛮像的,这里小编就和大家好好的探讨一下。 今天先来从明朝的…

Vue入门七(Vuex的使用|Vue-router|LocalStorage与SessionStorage和cookie的使用)

文章目录 一、Vuex1)理解vuex2)优点3)何时使用?4)使用步骤① 安装vuex② 注册vuex③ 引用vuex④ 创建仓库Store五个模块介绍 5)基本使用 二、Vue-router三、LocalStorage与SessionStorage、cookie的使用 一…