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

news2024/11/19 13:30:02

题型:数组、计数、排序、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.coloradmin.cn/o/1491932.html

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

相关文章

二手手机管理系统|基于Springboot的二手手机管理系统设计与实现(源码+数据库+文档)

二手手机管理系统目录 目录 基于Springboot的二手手机管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户管理功能的实现界面 2、用户中心管理功能的实现界面 3、新闻信息管理功能的实现界面 4、商品收藏管理功能的实现界面 5、订单管理功能的实现界…

浅析扩散模型与图像生成【应用篇】(六)——DiffuseIT

6. Diffusion-based Image Translation using Disentangled Style and Content Representation 本文介绍了一种基于扩散模型的图像转换方法&#xff0c;图像转换就是根据文本引导或者图像的引导&#xff0c;将源图像转换到目标域中&#xff0c;如下图所示。   在图像转换中待…

Java 面试题及答案整理,最新面试题

Java中的内存模型是如何设计的&#xff1f; Java的内存模型主要包括堆、栈、方法区和本地方法栈几个关键部分&#xff1a; 1、堆&#xff08;Heap&#xff09;&#xff1a; 这是Java内存管理中最大的一块&#xff0c;被所有线程共享。在堆中主要存放对象实例和数组。 2、栈&…

「经验」在博途中 是否可以在 LAD与STL 语言之间进行切换

用惯了STEP7&#xff0c;准确来说是SIMATIC Manager进行编程开发的同学&#xff0c;在转战TIA portal后&#xff0c;通常会经历一段“晦涩”的过度期&#xff0c;包括指令库的微小变动、工作界面的大改等等。 又比如&#xff1a;“在博途中&#xff0c;怎么快速切换LAD与STL语…

7.1.3 Selenium的用法2

目录 1. 切换 Frame 2. 前进后退 3. 对 Cookies 操作 4. 选项卡管理(了解) 5. 异常处理 6. 反屏蔽 7. 无头模式 1. 切换 Frame 我们知道网页中有一种节点叫作 iframe&#xff0c;也就是子 Frame&#xff0c;相当于页面的子页面&#xff0c;它的结构和外部网页的结构完全…

计算机网络、协议、端口号

1&#xff0c;TCP&#xff1a;面向连接服务的协议 2&#xff0c;IP、UDP&#xff1a;面向无连接的协议 3&#xff0c;OST参考模型&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 低三层&#xff1a;通信子网&#xff1b;中三层&#xff1a;资源子…

Flutter整体框架

Flutter整体框架由三部分组成&#xff1a;Framework、Engine和Embedder。 Framework Framework提供了一个用 Dart 语言编写的现代、反应式框架&#xff0c;由许多抽象的层级组成。它包括一套丰富的布局、动画、绘制、手势UI组件及配套代码&#xff0c;以及更基础的异步、文件、…

数字化转型导师坚鹏:银行业科技产品及零售贷款咨询方法与案例

银行业科技产品及零售贷款咨询方法与实战案例 课程背景&#xff1a; 数字化转型背景下&#xff0c;很多机构存在以下问题&#xff1a; 不知道银行业科技产品咨询方法&#xff1f; 不知道零售贷款咨询方法与案例&#xff1f; 不知道信贷中台咨询方法与案例&#xff1f; …

Mysql之存储过程与函数

Mysql之存储过程与函数 存储过程概述分类创建存储过程一般的语法格式完整的语法格式案例一案例二 调用存储过程调用语法格式 创建存储函数存储过程与函数的查看&#xff0c;修改和删除 存储过程概述 官网解释是&#xff1a;存储过程的英文是 Stored Procedure 。它的思想很简单…

Java项目:36 springboot图书个性化推荐系统的设计与实现003

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 springboot003图书个性化推荐系统的设计与实现 管理员&#xff1a;首页、个人中心、学生管理、图书分类管理、图书信息管理、图书预约管理、退换图书…

java014 - Java继承

1、继承 1.1 继承概述 继承是面向对象的三大特征之一&#xff0c;可以使得子类具有父类的属性和方法&#xff0c;还可以在子类中重新定义&#xff0c;追加属性和方法。 1.2 继承格式 public class 子类类名 extends 父类类名 {} 范例&#xff1a;public class son extends …

如何在Matlab代码中使用C代码

一、为什么在Matlab中使用C 性能优化&#xff1a;C语言提供了接近硬件的编程能力&#xff0c;使得开发者可以编写高效率的代码。对于计算密集型任务&#xff0c;尤其是那些需要大量数值计算的场景&#xff0c;用C语言编写的函数通常比MATLAB内置函数运行得更快。这是因为C语言…

Vue基础入门(2)- Vue的生命周期、Vue的工程化开发和脚手架、Vue项目目录介绍和运行流程

Vue基础入门&#xff08;2&#xff09;- Vue的生命周期、Vue的工程化开发和脚手架、Vue项目目录介绍和运行流程 文章目录 Vue基础入门&#xff08;2&#xff09;- Vue的生命周期、Vue的工程化开发和脚手架、Vue项目目录介绍和运行流程5 生命周期5.1 Vue生命周期钩子5.2 在creat…

12:Logstash|Web日志实时分析

Logstash|Web日志实时分析 logstashlogstash工作结构安装Logstash编写logstash配置文件步骤一:codec类插件插件帮助手册Logstash input插件步骤一:file模块插件filter grok插件Web日志实时分析部署beats与filebeat步骤一:filter grok模块插件logstash 一个数据采集、加工处…

python 基础知识点(蓝桥杯python科目个人复习计划55)

今日复习内容&#xff1a;做题 例题1&#xff1a;体育健将 问题描述&#xff1a; 小蓝作为班级里的体育健将&#xff0c;他被安排在校运会时参加n个体育项目&#xff0c;第i个体育项目参赛需要耗时ai分钟&#xff0c;赛后休息需要bi分钟&#xff08;这意味着当他参加完这场比…

如何使用程序调用通义千问

之前分享了&#xff0c;使用程序调用文心一言。但是很快文心一言就要收费了。阿里的提供了暂时免费版的基础模型&#xff0c;效果还算可以。所以再分享一下&#xff0c;如何使用程序来调用通义千问的模型。 整体很简单&#xff0c;分三步&#xff1a;导入依赖&#xff1b;获取A…

STL-map和set

目录 一、关联式容器 二、键值对 三、树形结构的关联式容器 3.1 set 3.1.1 set介绍 3.1.2 set的使用 1. set的模板参数列表 2. set的构造 3. set的迭代器(类型是双向迭代器) 4. set的容量 5.set修改操作 6、operator 7. set的使用举例 3.2 map 3.2.1map介绍 3.2.2map的…

QT 打开项目提示 no valid settings file could be found

QT 打开项目提示 no valid settings file could be found 解决方案&#xff1a; 删除对应项目中的.user 文件 在打开项目&#xff0c;而后点击“项目”&#xff0c;在Configure project 栏中选择合适的kits然后点击configure project按钮即可。

C++面试干货---带你梳理常考的面试题(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 1.struct 和 class 区别 1.默认访问权限&#xff1a;struct中的成员默认为public&#xff0c;而class中的成员默认为priv…

绘图设计:用Draw.io绘制图形技巧大全(含统一建模语言UML模板)

一、常见UML模板 1.流程图 2.用例图 include是包含关系&#xff0c;extend是扩展关系 简而言之&#xff0c;include是子集指向父集&#xff1b;而extend是扩展用例指向基础用例&#xff08;基础用例可以理解为系统核心功能&#xff0c;扩展用例是可选的&#xff0c;不是必须…