实习冲刺Day23

news/2024/11/18 6:47:53/

算法

多数元素

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

题目要求空间位O(1),时间为O(n)的方法

采用摩尔投票法解决,摩尔投票法是一种用于在数组中寻找多数元素的有效方法。所谓多数元素,是指在数组中出现次数超过一半以上的元素。

算法遍历数组并维护两个变量:多数元素量与投票数。先开始将第一个元素设置成候选元素,投票数为1

  1. 如果票数为0,将当前元素设为候选元素,并将票数设置为1。
  2. 如果当前元素等于候选元素,则票数加1。
  3. 如果当前元素不等于候选元素,则票数减1。
class Solution {
public:int majorityElement(vector<int>& nums) {int max_sum = nums[0];//将第一个元素先设置成多数元素int sum = 1;//记录个数for (int i = 1; i < nums.size(); i++) {if (nums[i] != max_sum) {//如果下一个值与当前多数元素值不等sum--;.//个数减一if (sum == 0) {//当个人为0的时候max_sum = nums[i];、、替换sum = 1;//个数重新统计成1}} else {sum++;//相等的时候个数加加}}return max_sum;}
};

基础知识

什么是 C++ 内联函数?

【C++】C++中内联函数详解(搞清内联的本质及用法)-CSDN博客

内联函数在形式上与普通函数结构相同,只是在函数前加上一个inline关键字

inline int sum(int a,int b){return a+b;
}
  • 内联函数目的:代替部分 #define 宏定义;
  • 使用内联函数替代普通函数的目的:提高程序的运行效率;
  • 递归函数不能被设置成内联函数

它的作用是什么?

1. 替换宏定义

​​宏是预处理指令,在预处理的时候把所有的宏名用宏体来替换;

内联函数是函数,在编译阶段把所有调用内联函数的地方把内联函数插入;
宏没有类型检查,无论对还是错都是直接替换;而内联函数在编译时进行安全检查;​
宏的编写有很多限制,例如只能写一行,不能使用return控制流程等;
对于C++ 而言,使用宏代码还有另一种缺点:无法操作类的私有数据成员。

2. 代替普通函数嵌入在代码中,提高程序的运行效率。

内联函数与普通函数有什么区别?

普通函数会频繁的开辟栈帧,系统开销大,为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开。这种在函数调用处直接嵌入函数体的函数称为内联函数。但也存在缺点,就是每一调用处均会展开,增加了重复的代码量。

使用了内联函数,编译器也不一定会识别成内联函数,如果代码量过大的话,也不会被识别内联函数,还有递归函数不能设置成内联函数,


http://www.ppmy.cn/news/1547926.html

相关文章

STM32单片机设计防儿童人员误锁/滞留车内警报系统

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 近年来在车辆逐渐普及的情况下&#xff0c;由于家长的疏忽&#xff0c;将…

嵌入式学习-C嘎嘎-Day03

嵌入式学习-C嘎嘎-Day03 1. 友元 friend 1.1 概念 1.2 友元函数 1.3 友元类 1.4 友元成员函数 2. 运算符重载 2.1 概念 2.2 友元函数运算符重载 2.3 成员函数运算符重载 2.4 特殊运算符重载 2.4.1 赋值运算符重载 2.4.2 类型转换运算符重载 2.5 注意事项 3. 字符串类型 string …

比特币前景再度不明,剧烈波动性恐即将回归

比特币市场降温&#xff0c;波动性增加 自特朗普赢得美国总统大选以来&#xff0c;比特币市场的投机狂热有所降温&#xff0c;现货和衍生品市场的活跃度开始减弱。比特币在上周五跌破87000美元&#xff0c;较之前创下的历史高点低了约6500美元。这一变化受到美联储主席鲍威尔讲…

【Mysql 底层原理】MySQL 查询优化器的工作原理:如何生成最优执行计划

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

Elasticsearch面试内容整理-Elasticsearch 基础概念

Elasticsearch 是一个基于 Apache Lucene 的开源分布式搜索和分析引擎,提供强大的全文本搜索、实时数据分析、分布式存储等功能。以下是 Elasticsearch 的一些基础概念: 什么是 Elasticsearch? ● Elasticsearch 是一个用于全文搜索和实时分析的分布式搜索引擎。 ● 开源和可…

el-cascader 使用笔记

1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载&#xff08;官网&#xff09; <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…

跟李笑来学美式俚语(Most Common American Idioms): Part 10

Most Common American Idioms: Part 10 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记&#xff0c;自用。 Github仓库链接&#xff1a;https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来&#xff08;或者clone到本地…

安全见闻(完整版)

目录 安全见闻1 编程语言和程序 编程语言 函数式编程语言&#xff1a; 数据科学和机器学习领域&#xff1a; Web 全栈开发&#xff1a; 移动开发&#xff1a; 嵌入式系统开发&#xff1a; 其他&#xff1a; 编程语言的方向&#xff1a; 软件程序 操作系统 硬件设备…