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

Luogu P2397 yyy loves Maths VI (mode) / Leetcode 229 多数元素 II 题解 [ 橙 ] [ 摩尔投票 ]

Luogu P2397 yyy loves Maths VI (mode)

摩尔投票能通过 \(O(n)\) 的时间,\(O(1)\) 的空间完成主元素判断。该过程可以用某些数据结构进行维护,所以在求众数上有比较大的优势。注意该算法必须保证众数存在,否则最后需要再进行一次 \(O(n)\) 空间的判断无解

算法流程:

  • 遍历所有元素,若此时临时变量里没有元素,则设为该元素。
  • 否则和临时变量里的数相消,临时变量的计数减 \(1\)
#include <bits/stdc++.h>
#define fi first
#define se second
#define eb(x) emplace_back(x)
#define pb(x) push_back(x)
#define lc(x) (tr[x].ls)
#define rc(x) (tr[x].rs)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
using pi = pair<int, int>;
int n, cnt, a, val;
int main()
{//freopen("sample.in", "r", stdin);//freopen("sample.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;while(n--){cin >> a;if(cnt == 0) val = a;if(val == a) cnt++;else cnt--;}cout << val;return 0;
}

核心思想是将两个不同元素相消,最后剩下的就是主元素

Leetcode 229 多数元素 II

摩尔投票简单拓展。把摩尔投票的每次删两个不同元素改成每次删三个不同元素即可。具体实现上要维护两个候选值与其计数变量。

最后因为要判断有无解,所以空间复杂度依然是 \(O(n)\) 的。

class Solution {
public:vector<int> majorityElement(vector<int>& nums) {vector<int> ans;const int inf = 0x3f3f3f3f;int val1 = -inf, val2 = -inf, cnt1 = 0, cnt2 = 0;for(auto x : nums){if(val1 == x)cnt1++;else if(val2 == x)cnt2++;else if(cnt1 == 0){val1 = x;cnt1++;}else if(cnt2 == 0){val2 = x;cnt2++;}else{cnt1--;cnt2--;}}cnt1 = cnt2 = 0;for(auto x : nums){if(x == val1) cnt1++;else if(x == val2) cnt2++;}if(cnt1 > nums.size() / 3) ans.push_back(val1);if(cnt2 > nums.size() / 3) ans.push_back(val2);return ans;}
};
http://www.sczhlp.com/news/10978/

相关文章:

  • OMV
  • 参考第三方链接
  • GAS_Aura-Replication Mode
  • Gitee企业版效能度量升级:用数据“透视镜”驱动研发效能革命
  • C# Web开发教程(二)
  • vue-router 加载动态路由不能动态引入解决方案
  • Daily Probs 2
  • 深入解析:B-树与B+树
  • 盘点迪士尼电影下载入口|迪士尼动画电影合集高清资源下载全平台支持
  • x86 机器 上拉取 ARM 架构的 Docker 镜像
  • 自定义导出逻辑
  • vulnyx Carlam writeup
  • eth 内存池pending机制以及按照nonce执行 - 若
  • 26_1 类与对象学习练习指导
  • 【上新啦】HarmonyOS官方模板优秀案例 (第2期:新闻行业 综合新闻)
  • 麒麟操作系统apt安装软件时报错默认禁用该源怎么处理
  • 一图胜千言:如何打造高专业度的技术博客/开源项目配图?
  • 面经学习-HTTP2的优点
  • 思通数科 AI视频监控:重构安防行业智能化新生态
  • 软考中级系统集成项目管理工程师近10年历史真题
  • 零基础学MCP(2)| MCP 开发环境配置
  • python编译单个.py到.pyc
  • 破解能源管控难题:MyEMS 开源系统的实战价值与创新路径
  • HarmonyOS SDK助力高德地图创新,带来便捷出行新体验
  • Gitee DevSecOps:军工软件研发转型的“智能引擎”
  • 2023年下半年中级系统集成项目管理工程师下午真题及答案解析
  • RHEL8,提取 DEV hosts升級安裝包,去PROD host 安裝
  • P4198 楼房修建 详解
  • linux 节约存储空间, 重复文件转换为硬链接
  • 短视频电商直播带货系统源码:核心功能与未来规划设计