稀碎从零算法笔记Day5-LeetCode:多数元素

题型:数组、计数、排序、STL函数、查找众数

链接:169. 多数元素 - 力扣(LeetCode)

来源:LeetCode  著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题目描述

给定一个大小为 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

题目思路

2024.3.1(这个更新一点)

绝了,话不多说 !

说干就干!(毕竟我都排完序了。。)


2024.3.1

思路还是很好想的:先排好序,然后统计边遍历边统计这个元素的个数(当然后面指针要后移相应的个数的位置)。

这里笔者试着用了刚学的STL中的一众函数(比如sort()、cout()),其中count(迭代器、迭代器、要查找的数)。因此如果想从第i个元素开始计数,参数那里应该是【迭代器+i】;最终返回的值可以直接被int接收(当然最稳妥的方法是先转为int再接收)

C++代码

class Solution {
public:int majorityElement(vector<int>& nums) {int i=0,len=nums.size(),target;//target是要查个数的元素sort(nums.begin(),nums.end());//按从小到大顺序排序while(i<len){target=nums[i];int lamb=count(nums.begin()+i,nums.end(),target);//统计出现的个数 参数前两个应该是迭代器。//int lamb=(int)numb;cout<<lamb<<endl;if(lamb>(len/2)){break;}i+=lamb;}return nums[i];}
};

只排序的代码:

class Solution {
public:int majorityElement(vector<int>& nums) {int i=0,len=nums.size(),target;//target是要查个数的元素sort(nums.begin(),nums.end());//按从小到大顺序排序// while(i<len)// {//     target=nums[i];//     int lamb=count(nums.begin()+i,nums.end(),target);//统计出现的个数 参数前两个应该是迭代器。//     //int lamb=(int)numb;//     cout<<lamb<<endl;//     if(lamb>(len/2))//     {//         break;//     }//     i+=lamb;// }return nums[len/2];}
};

 真少啊!

结算页面

使用了STL中的函数后还是不太行...

看了题解后

sort()占了时间大头(虽然是个nlogn的时间复杂度吧)

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

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

相关文章

#WEB前端(JS基础语法)

1.实验&#xff1a; 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; &#xff08;1&#xff09;数据类型 var&#xff0c;let&#xff0c;const var,let声明变量&#xff0c;const声明常量。var声明的变量具有函数作用域,let声明的变量具有块级作用域&#xff0c;let跟安全更…

NVMe管理命令为何不用SGL?-2

在IO数据传输中&#xff0c;是否选择SGL可以根据自身场景的需要。SGL提供的是一种高效且灵活的方式来描述非连续的内存区域&#xff0c;这对于现代高性能存储系统至关重要&#xff0c;尤其是在处理大数据块或者随机小I/O操作时具有明显优势&#xff1a; 高效的数据传输&#xf…

二叉树的深搜题解析

文章目录 前言计算布尔二叉树的值求根节点到叶节点数字之和解析代码 二叉树剪枝解析代码 验证二叉搜索树解析代码 二叉搜索树中第K小的元素代码 二叉树的所有路径解析代码 前言 大家好我是jiantaoyab&#xff0c;在这里分享给大家二叉树深搜相关题目的练习和解析&#xff0c;通…

【中国算力大会主办】2024算法、高性能计算与人工智能国际学术会议(AHPCAI 2024)

【中国算力大会主办】2024算法、高性能计算与人工智能国际学术会议&#xff08;AHPCAI 2024&#xff09; 2024 International Conference on Algorithms, High Performance Computing and Artificial Intelligence 2024算法、高性能计算与人工智能国际学术会议&#xff08;AH…

使用java的Stream流进行Collectors.groupingBy分组后生成Map,对Map进行删除原集合是否会发生改变

在Java中&#xff0c;当我们使用Collectors.groupingBy方法对集合进行分组操作时&#xff0c;生成的新映射&#xff08;Map&#xff09;是基于原始集合&#xff08;allItems&#xff09;的数据结构和内容创建的。这意味着&#xff0c;如果你更改了新的映射allItemMap中的值&…

车牌定位识别企业版

车牌定位识别企业版&#xff0c;只需要OPENCV&#xff0c;采用YOLOV8NANO检测车牌区域&#xff0c;然后使用PADDLE OCR检测车牌&#xff0c;能识别各国车牌&#xff0c;支持C,PYTHON开发 车牌定位识别企业版&#xff0c;只需要OPENCV&#xff0c;支持C,python

力扣大厂热门面试算法题 - 动态规划

爬梯子、跳跃游戏、最小路径和、杨辉三角、接雨水。每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.05 可通过leetcode所有测试用例。 目录 70. 爬楼梯 解题思路 完整代码 Python Java 55. 跳跃游戏 解题思路 完整代码 Python 代码…

RabbitMQ如何实现消费端限流

什么是消费端限流&#xff0c;这个一种保护消费者的手段&#xff0c;假如说&#xff0c;现在是业务高峰期了&#xff0c;消息有大量堆积&#xff0c;导致MQ消费需要不断的进行消息消费&#xff0c;很容易被打挂&#xff0c;甚至重启之后还是会被大量消息涌入&#xff0c;继续被…

Android APK包反编译为java文件教程

方法 流程&#xff1a; test.apk -> smali文件 -> dex文件 -> jar文件 ->java 文件 将APK包解压为 smail文件 下载 apktool工具 apktool.jar 将 test.apk 和 apktool.jar放同一目录下&#xff0c;并执行以下命令 java -jar apktool.jar d -f xxx.apk -o xxx(解…

Linux Watchdog 机制是什么

当涉及到Linux操作系统的稳定性和可靠性时&#xff0c;Linux Watchdog机制是一个至关重要的议题。该机制旨在监控系统状态&#xff0c;确保在出现问题时采取适当的措施以维持系统的正常运行。本文将深入探讨Linux Watchdog机制的工作原理、应用范围以及如何配置和使用该机制来提…

Ubuntu下安装Scala

前言 弄了一下终于成功装上了&#xff0c;这里对此进行一下总结 安装虚拟机 VMware虚拟机安装Ubuntu&#xff08;超详细图文教程&#xff09;_vmware安装ubuntu-CSDN博客https://blog.csdn.net/qq_43374681/article/details/129248167Download Ubuntu Desktop | Download | …

如何管理系统中的敏感数据?

如何管理系统中的敏感数据&#xff1f; 本文转自 公众号 ByteByteGo&#xff0c;如有侵权&#xff0c;请联系&#xff0c;立即删除 如何在系统中管理敏感数据&#xff1f;下图列出了一系列指导原则。 什么是敏感数据&#xff1f; 个人身份信息 (PII)、健康信息、知识产权、财务…