【编程技巧】精通编程的秘密武器:高效编程技巧揭秘!

简介: 【编程技巧】精通编程的秘密武器:高效编程技巧揭秘!



🕵️‍♀️1. 摩尔投票算法:求解多数元素

🔍1.1 问题描述:多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素【多数元素是指在数组中出现次数 大于一半及以上的元素】

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

示例 1:
输入:nums = [3,2,3]
输出:3
示例 2:
输入:nums = [2,2,1,1,1,2,2]
输出:2

代码模板:

class Solution {
public:
    int majorityElement(vector<int>& nums) {
    }
};

🔍1.2 摩尔投票算法

摩尔投票算法是一种用于寻找数组中出现次数超过一半的主要元素的高效算法。该算法的核心思想是通过不同元素之间的相互抵消来找到可能的主要元素。

时间复杂度为 O(n),空间复杂度为 O(1)。

摩尔投票算法的详细步骤:

  1. 初始化候选元素和计数器: 选择数组的第一个元素作为候选元素,初始计数器为1。
  2. 遍历数组:从数组的第二个元素开始遍历,对于每个元素执行以下操作:
  • 如果当前元素与候选元素相同,将计数器加1。
  • 如果当前元素与候选元素不同,将计数器减1。
  • 如果计数器减到0,说明之前的候选元素的出现次数与当前元素的出现次数相抵消,因此选择当前元素作为新的候选元素,并将计数器重新设为1。

摩尔投票算法的关键在于,由于主要元素的出现次数超过一半【前提条件】,其余元素的出现次数总是无法抵消主要元素的出现次数,因此最终剩下的候选元素即为主要元素。

🎉解决代码
class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int num=nums[0],count=0;
        for(int i=0;i<nums.size();i++){
            if(i==0 ||num==nums[i]){
                count++;
            }
            else{
                if(count==0){
                    num=nums[i];
                    count=1;
                }
                else count--;
            }
        }
        return num;
    }
};

参考视频:【摩尔投票法】


目录
相关文章
|
分布式数据库 Hbase
HBase sequenceId知识点略记
在HBase中,sequenceId是实现一致性的灵魂,这里的一致性有两方面意思: 顺序性,即先写的先被读到,未提交的写不能被读到; 完整性,包含如下几点; 未持久化到hfile的数据,对应的wal文件不能删除 如果由于wal文件过多需要清理,则需要先把对应的数据持久化 异常恢复过程中,需要.
1898 0
|
11月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
240 1
|
11月前
|
人工智能 API C#
使用Microsoft.Extensions.AI简化.NET中的AI集成
使用Microsoft.Extensions.AI简化.NET中的AI集成
213 5
使用Microsoft.Extensions.AI简化.NET中的AI集成
|
存储 供应链 安全
使用区块链技术增强数据安全性
使用区块链技术增强数据安全性
|
12月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
263 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
存储 自然语言处理 搜索推荐
外汇CRM系统的关键特点及功能解析
Zoho CRM外汇系统提供全面客户管理,涵盖信息记录、交易历史等,提升个性化服务水平。系统界面直观易用,支持自定义,数据分析实时,助决策精准。具备高安全性,多系统整合能力强,自动化功能提高效率,支持多语言,适用于全球市场,配备专业客户支持与培训,助力外汇企业优化流程,增强客户满意度,在竞争中领先。
232 1
|
移动开发 前端开发 开发者
|
存储 监控 数据处理
Flink⼤状态作业调优实践指南:Datastream 作业篇
本文整理自俞航翔、陈婧敏、黄鹏程老师所撰写的大状态作业调优实践指南。
57035 5
Flink⼤状态作业调优实践指南:Datastream 作业篇
|
机器学习/深度学习 供应链 安全
量子计算在物流中的应用前景?
【8月更文挑战第4天】量子计算在物流中的应用前景?
302 2
|
Arthas 监控 Java
慢调用链诊断利器-ARMS 代码热点
慢调用链诊断利器-ARMS 代码热点
360 77