「数组」线性枚举(遍历)/ LeetCode 1464(C++)

c++中的enum类型 C++允许程序员创建自己的数据类型,比如本节要将的枚举类型。枚举数据类型是一种由程序员定义的数据类型,其合法值是与它们关联的一组命名整数常量。 之所以被称为枚举类型,就是因为命名常量是作为数据类型定义的一部分而枚举或列出的,以下是枚举类型声明的示例: enum Roster {Tom, Sharon, Bill, Teresa, John}; 该语句将创建一个名为 Roster 的数据类型。... 阅读详情

目录

概述

思路

算法过程

复杂度

Code


概述

在一切数据结构一切算法开始的时候,我们先来说的一定是数组的遍历。

LeeCode 2464:

给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。

请你计算并返回该式的最大值。

示例 :

输入:nums = [3,4,5,2]
输出:12 
解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12 。 

思路

线性枚举,即遍历,是最基本的查找算法。

这几乎是最一般的对数组进行完全分析的手段:我们从数组的开始,一个一个读到数组的末尾。 

C++提供了多种遍历手段,有如:

const int n;            //n为数组长度
while(n--)              //次数while循环
for(int i=0;i<n;i++)    //下标for循环
for(const int& num:nums)//范围for循环(C++11)

每轮循环都是对上一轮循环的继承,因此: 

我们可以在单次循环体内进行一些操作同时维护多个变量来将遍历次数尽可能压缩。

算法过程

对于一个数组,我们可以同时维护他的最大值MAX和次大值max

定义MAX(最大)和max(次大)初始值为0,遍历过程中如果监测到nums[i]>MAX,则将旧的最大值赋给次大值,然后用nums[i]更新最大值;如果nums[i]>max,则只更新次大值。
这样我们就在通过一次遍历同时维护了数组的最大值和次大值。

复杂度

时间复杂度: O(n)
空间复杂度: O(1)

 

Code

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        int MAX=0,max=0;
        for(int i=0;i<nums.size();i++){
           if(nums[i]>MAX){max=MAX;MAX=nums[i];}
           else if(nums[i]>max){max=nums[i];}
        }
        return (MAX-1)*(max-1);
    }
};
11种图像清晰度评价函数附MATLAB代码 博主的第一篇博客! 本科毕业论文是“基于图像处理的自动对焦技术研究”,对焦过程中的一个重要阶段是图像清晰度评价,博主自己用MATLAB实现了4类清晰度评价函数:基于图像梯度的清晰度评价函数、频域评价函数、信息熵评价函数、统计学评价函数,总计11种。博主之前没有用过MATLAB,完全是本科论文需要,没办法对着别人的代... 阅读详情

相关推荐

Stata实战:用双向固定效应模型分析房价,从数据清洗到结果解读(附完整代码)

本文详细介绍了如何使用Stata实现房价数据的双向固定效应模型分析,从数据清洗到结果解读的全流程。通过具体代码示例,帮助读者掌握面板模型的应用技巧,特别适合经济学和金融学研究者进行房价影响因素分析。

weixin_31528001的博客 277

C/C++中如何遍历枚举类型?

在这个代码中,我们定义了一个空的 vector,然后使用循环将枚举类型中的所有元素添加到 vector 中。循环的终止条件是枚举类中的一个特殊枚举值 Count,它表示枚举类型中所有枚举值的数量。由于枚举器是以 0 开始递增的整数序列,所以我们可以使用整型变量 i 从 0 到 Count - 1 循环,将枚举器的值强制转换为枚举类型,并添加到 vector 中。枚举类允许使用枚举器来表示枚举值,枚举器是通过 enum class 关键字定义的。使用枚举类的好处是代码简洁,不需要手动写入所有枚举值。

weixin_42766637的博客 6707

从零开始:用Kimi API和LangChain打造智能写作助手

本文详细介绍了如何从零开始,利用Kimi API提供的强大AI大模型能力,结合LangChain框架构建一个智能写作助手。通过实战演示了环境搭建、核心写作链构建、以及引入检索增强生成和智能体等进阶功能,旨在解决长文档创作、事实准确性等痛点,打造一个能理解意图、调用工具并保持记忆的智能创作伙伴。

weixin_29294395的博客 139

C++枚举遍历

遍历C++枚举C++11版本C++98版本 C++11版本 ... //.hpp enum class Week { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; //用数组容器包装 constexpr initializer_list<Week> Weeks = { Week::Monday, Week::Tuesday, Week::Wednesday, Week::Thurs

huolinianyu的博客 5120

如何使用Qt的PIMPL习惯用法(PIMPL Idiom

PIMPL是指“Pointer to IMPLementation”(指向实现的指针),意味着将实现细节隐藏起来,用户类无需关注这些实现细节。在Qt中常用PIMPL习惯用法来清晰地区分接口与实现,尽管Qt官方文档并未详细说明该机制。本文将演示如何在Qt中使用PIMPL习惯用法,并以一个简单的坐标输入对话框作为实例。

电脑管家 1034

电子技术设计——16×16点阵汉字显示设计

同时,设计还应注重提升显示品质,以保证汉字的稳定展示和观感舒适。本设计的目的是构建一个能够准确在LED点阵上展示汉字的系统,并允许用户通过输入设备来选择所需的汉字,我们将验证设计方案的实际操作性和效果,以确保其满足设计目标。在LED点阵显示和汉字信息处理技术的结合下,研究者们着手研究如何在LED点阵上有效地显示汉字,并提出了一系列显示算法和优化策略,旨在实现清晰且易于阅读的汉字显示效果。首先,你需要准备16×16的LED点阵面板,通常这些点阵是8×8点阵的两倍,因此可以由两个8×8的点阵组合而成。

weixin_68094467的博客 1533

c++学习:枚举循环(for的另一种写法)

等同于i按顺序等于a数组里的每一个数,让 i 遍历a数组里的所有元素,等同于python的用法。

weixin_59669309的博客 901

PID参数自整定实战解析:从继电反馈到智能调节的完整实现

本文深入解析PID参数自整定的实战应用,从继电反馈原理到智能调节算法的完整实现。通过详细讲解振荡波形特征提取、参数计算的工程化改进及工业场景调试技巧,帮助工程师快速掌握PID自整定技术,提升控制系统性能。特别针对嵌入式系统优化和噪声环境下的稳定策略提供了实用解决方案。

weixin_28731223的博客 462

c/c++ enum枚举类型及其遍历

我们以一年有四个季节进行枚举实例 c: enum Season { SPR = 0, SUM, AUT, WIN, //最后一个逗号可以不加 }; //结尾必须加; 注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。如果我们想从1开始,那么我们可以将第一个SPR = 1,这样我们可以达到1,2,3,4的排列顺序。...

c1149884598的博客 1万+

【FOC无刷电机控制】六步换向、FOC,STM32cubemx从零开始搭建BLDC六步换相代码、FOC代码(基于霍尔传感器)

FOC、六步换相,无刷电机控制

xifan的博客 3万+

嵌入式铁头山羊stm32:一文总结

本文是一篇STM32嵌入式开发的综合知识总结,涵盖了STM32基础概念、GPIO、通信协议、外设驱动等核心内容。文章首先介绍了STM32的基本概念和型号含义,然后详细讲解了GPIO的8种工作模式及实验案例。接着重点阐述了USART、I2C、SPI三种通信协议的原理和实现方法,包括硬件连接、编程接口和实验应用。此外还介绍了OLED显示原理、中断系统、定时器、ADC转换等关键技术,每个模块都配有对应的实验案例和代码实现参考。文章内容全面系统,既包含理论知识,又提供实践指导,适合作为STM32开发的快速参考手册。

古泽汉书的博客 2785

⭐算法入门⭐《线性枚举》简单04 —— LeetCode 1464. 数组中两元素的最大乘积

《线性枚举》简单04 —— LeetCode 1464. 数组中两元素的最大乘积

英雄哪里出来 2676

[QMT量化交易小白入门]-七、可转债双低策略Python代码详解与实战

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 3868

【山无遮,海无拦】LeetCode题集 线性枚举之最值算法

目录 1464.数组中两元素的最大乘积 法一:线性扫描 法二:排序 485. 最大连续 1 的个数 法一:线性扫描 153. 寻找旋转排序数组中的最小值 法一:线性扫描 法二:二分法 154. 寻找旋转排序数组中的最小值 II 法一:线性扫描 法二: 二分法 414. 第三大的数 法一:线性扫描 法二:排序 628. 三个数的最大乘积 法一:线性扫描 法二: 排序 1464.数组中两元素的最大乘积 题目:给你一个整数数组 nums,请你选择数...

m0_46539322的博客 379

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C/C++中遍历枚举类型

enum

weixin_42359888的博客 1597

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++基础算法之枚举

1>枚举通过穷举所有可能的情况来解决问题,本质上就是一种搜索算法将问题的所有解的可能都列举出来根据题目要求验证和比较找到满足问题条件的优解或者所有解枚举算法的优缺点>:优点:简单直观,不需要复杂的数学推导,易于实现缺点:运算量过大,当问题的规模变大的时候,循环的阶数越大,执行速度越慢枚举算法的运用场景>:枚举算法适用于问题规模较小、解空间可穷举的情况。

2301_79201049的博客 3146

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C++学习day--23 枚举、类型定义、头文件

C++学习day--23 枚举、类型定义、头文件

我的博客 2033

C++枚举类型(enum)的用法

C/C++枚举

llookl的博客 942

C++|遍历枚举值

C++遍历枚举值

编程改变世界。想做一些改变世界的产品。感谢一键三连。 796

Java 遍历枚举值

Java 遍历枚举值 枚举是Java中数据类型,用于将一组预定义常量赋给变量。本文介绍几种方式遍历枚举值。 1. 定义枚举 首先我们定义枚举,简单示例如下: public enum DaysOfWeekEnum { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } Enum类型没有提供迭代方法,如forEach() 或 iterator(), 我们可以使用其val

neweastsun的专栏 5万+

枚举(枚举遍历)

几个重要的地方(1)定义认为几个比较关键的地方每个枚举器或变量名必须是唯一的。但是,值可以重复(2)定义使用范围 classclass可使用声明中的此关键字指定枚举区分范围。

Ma_Hong_Kai的博客 814

C:enum(枚举)

enum(枚举) https://www.runoob.com/cprogramming/c-enum.html #include <stdio.h> #include <stdlib.h> int main() { enum color { red=1, green, blue }; enum color favorite_color; ...

weixin_43731793的博客 449

enum枚举使用以及枚举遍历

关于枚举的那些事

IT菜鸡成长记 4846

枚举的遍历

Java语言 枚举的遍历

大杂烩 4476

C++11新特性

参考文档:https://www.jianshu.com/p/d0a98e0eb1a8 C++ 11中引入了大量非常有用的特性,使代码更直观、安全、简洁、方便。 初始化列表 Initializer List 所有STL容器都支持初始化列表,如下: std::vector<int> v = { 1, 2, 3 }; std::list<int> l = { 1, 2, 3 }; std::set<int> s = { 1, 2, 3 }; std::map<int.

Cybenko 599

c/c++ enum枚举并实现对枚举进行遍历

枚举: c/c++: struct enum camera_mem_cb_type{ CAMERA_PREVIEW=0, CMAERA_SNAPSHOT, CAMERA_VIDEO, CAMERA_STATIS, CAMERA_MEM_MAX, }mem; 对枚举类型的遍历: C: struct enum camera_mem_cb_type{ CAMERA_PREVIEW=0, CMAERA_SNAPSHOT, CAMERA_V

溯源守拙的博客 2936
上一篇: 力扣第46题:全排列 库函数next_permutation与sort介绍()
下一篇: 力扣第38题:外观数列 奇技淫巧模拟(C++)
Daking-
博客等级 码龄3年 912粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值