找加工订单的网站,网站开发背景策划书,安徽建筑人才网,营销数据网站题型#xff1a;数组、计数、排序、STL函数、查找众数
链接#xff1a;169. 多数元素 - 力扣#xff08;LeetCode#xff09;
来源#xff1a;LeetCode 著作权归作者所有。商业转载请联系作者获得授权#xff0c;非商业转载请注明出处。
题目描述
给定一个大小为 n …题型数组、计数、排序、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.length1 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(vectorint nums) {int i0,lennums.size(),target;//target是要查个数的元素sort(nums.begin(),nums.end());//按从小到大顺序排序while(ilen){targetnums[i];int lambcount(nums.begin()i,nums.end(),target);//统计出现的个数 参数前两个应该是迭代器。//int lamb(int)numb;coutlambendl;if(lamb(len/2)){break;}ilamb;}return nums[i];}
}; 只排序的代码
class Solution {
public:int majorityElement(vectorint nums) {int i0,lennums.size(),target;//target是要查个数的元素sort(nums.begin(),nums.end());//按从小到大顺序排序// while(ilen)// {// targetnums[i];// int lambcount(nums.begin()i,nums.end(),target);//统计出现的个数 参数前两个应该是迭代器。// //int lamb(int)numb;// coutlambendl;// if(lamb(len/2))// {// break;// }// ilamb;// }return nums[len/2];}
}; 真少啊
结算页面
使用了STL中的函数后还是不太行... 看了题解后 sort()占了时间大头虽然是个nlogn的时间复杂度吧