力扣面试经典100题
进阶,其他解法
数组
88. 合并两个有序数组 - 力扣(LeetCode)
1、按非递减顺序合并两个数组
从末尾开始,用while分没到两个数组头,到第一个数组头,到第二个数组头三种情况
class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {int i=m-1,j=n-1,k=m+n-1;while(i>=0&&j>=0){nums1[k--]=nums1[i]>nums2[j]?nums1[i--]:nums2[j--];}while(i>=0){nums1[k--]=nums1[i--];}while(j>=0){nums1[k--]=nums2[j--];}}
};
2、移除掉某个数值的元素,无序
27. 移除元素 - 力扣(LeetCode)
借助一个新标号
class Solution {
public:int removeElement(vector<int>& nums, int val) {//双指针法int slowIndex=0;for(int i=slowIndex;i<nums.size();i++){if (val!=nums[i]){nums[slowIndex++]=nums[i];//先赋值,再++}}return slowIndex;}
};
3、删除有序数组中的重复项
26. 删除有序数组中的重复项 - 力扣(LeetCode)
同样用一个标号,在原数组覆盖(序列长度有变化,且后面的元素不重要)同2
class Solution {
public:int removeDuplicates(vector<int>& nums) {int index=1;for(int i=1;i<nums.size();i++){if(nums[i]!=nums[i-1]){nums[index++]=nums[i];}}return index;}
};
4、80. 删除有序数组中的重复项 II - 力扣(LeetCode)
使得出现次数超过两次的元素只出现两次,记录相等的次数
class Solution {
public:int removeDuplicates(vector<int>& nums) {if(nums.size()<=2)return nums.size();int index=1;int count=0;for(int i=1;i<nums.size();i++){if(nums[i]==nums[i-1]){count++; if(count<=1){nums[index++]=nums[i];}}else{count=0;nums[index++]=nums[i];} }return index;}
};
5、169. 多数元素 - 力扣(LeetCode)
数组中出现次数超过一半的数字” 被称为 “众数”
此数字出现次数大于所有其他数字出现次数
class Solution {
public:int majorityElement(vector<int>& nums) {int x=0,votes=0;for(int num:nums){if(votes==0) x=num;votes+=x==num?1:-1;}return x;}
};
6、189. 轮转数组 - 力扣(LeetCode)
(i+k)%n,新建数组
class Solution {
public:void rotate(vector<int>& nums, int k) {int n=nums.size();vector<int> tmp(n);for(int i=0;i<n;i++){tmp[(i+k)%n]=nums[i];} nums.assign(tmp.begin(),tmp.end());}
};
7、121. 买卖股票的最佳时机 - 力扣(LeetCode)
某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票
class Solution {
public:int maxProfit(vector<int>& prices) {int pre =prices[0],ans=0;for(auto &m:prices){pre=min(pre,m);//pre来选极小值,越小越好ans=max(ans,m-pre);//ans来选抛售的极大值}return ans;}
};
8、122. 买卖股票的最佳时机 II - 力扣(LeetCode)------贪心解法
可购买出售多次,策略:只要不赔钱就一直买卖
class Solution {
public:int maxProfit(vector<int>& prices) {int profit=0;for(int i=1;i<prices.size();i++){int tmp=prices[i]-prices[i-1];if(tmp>0) profit+=tmp;}return profit;}
};
9、55. 跳跃游戏 - 力扣(LeetCode)
数组中的每个元素代表你在该位置可以跳跃的最大长度。
策略:看是否可以跳过最大长度为0 的位置
未成清贫难成人,不经挫折永天真 ;人情似纸张张薄,世事如棋局局新。
class Solution {
public:bool canJump(vector<int>& nums) {int step=1;int i=0;int n=nums.size()-1;for(int i=n-1;i>=0;i--){if(nums[i]>=step){step=0;}step++;}return step==1;}
};
贪心解法:判断并留下 之前走的最远的策略 和 当前策略 中最好的,若最好的去不到循环中下一个位置,则失败。
class Solution {
public:bool canJump(vector<int>& nums) {int rightMost=0;int n=nums.size();for(int i=0;i<n;i++){if(i<=rightMost){rightMost=max(rightMost,i+nums[i]) ; if(rightMost>=n-1) return true;}} return false;}
};
10、45. 跳跃游戏 II - 力扣(LeetCode)
要求:返回到达 nums[n - 1] 的最小跳跃次数
//数组[2,3,1,2,4,2,3]
//下标 0 1 2 3 4 5 6
策略:先看每个位置能跳的最远的职位级别;若看完了当前水平能看的公司,跑路一次(第一次可能在0,可能在1),当前水平增加
class Solution {
public:int jump(vector<int>& nums) {int ans = 0; //跳槽次数int curUnlock = 0; //当前你的水平能入职的最高公司级别int maxUnlock = 0; //当前可选公司最多能帮你提到几级for (int i = 0; i < nums.size() - 1; i++) { //从前向后遍历公司,最高级公司(nums.length-1)是目标,入职后不再跳槽,所以不用看,故遍历范围是左闭右开区间[0,nums.length-1)maxUnlock = max(maxUnlock, i + nums[i]); //计算该公司最多能帮你提到几级(公司级别i+成长空间nums[i]),与之前的提级最高记录比较,打破记录则更新记录if (i == curUnlock) { // 把你当前水平级别能选的公司都看完了,你选择跳槽到记录中给你提级最多的公司,以解锁更高级公司的入职权限curUnlock = maxUnlock; // 你跳槽到了该公司,你的水平级别被提升了ans++; //这里记录你跳槽了一次}if(curUnlock>=nums.size()-1) break;}return ans; //返回跳槽总次数}
};
11、274. H 指数 - 力扣(LeetCode)
看引用次数
策略:从高往低看,
int cmp(int*a,int *b){return *a-*b;
}
int hIndex(int* citations, int citationsSize) {qsort(citations,citationsSize,sizeof(int),cmp);int h=0,i=citationsSize-1;while(i>=0&&citations[i]>h){h++;i--;}return h;}
12、380. O(1) 时间插入、删除和获取随机元素 - 力扣(LeetCode)
相关文章:
力扣面试经典100题
进阶,其他解法 数组 88. 合并两个有序数组 - 力扣(LeetCode) 1、按非递减顺序合并两个数组 从末尾开始,用while分没到两个数组头,到第一个数组头,到第二个数组头三种情况 class Solution { public:voi…...
python打怪练习
1. 求一个数的幂值 def mi(a, b):c afor i in range(b-1):a a * creturn aprint(mi(2, 4))2. 输出斐波那契数列 def feibonaqi(n):l []a 1b 1for i in range(n):l.append(a)l.append(b)a b ab a bprint(l)feibonaqi(5)3. 输出特定字典数据 keys [name, old, score…...
excel下载模板,0KB或者乱码问题
Sptingboot项目 — maven打包,云效,docker,k8s 场景 — 导出excel模板 问题 1.乱码 2.下载为0KB,打开没有数据 模板内容 测试代码 测试方法 方法过程结果问题原因将文件直接放到服务器使用接口下载数据正常,排除文件问题排…...
JDBC连接Mysql数据库超详细讲解
JDBC连接Mysql数据库 如何导入驱动jar包 进入mysql官网 – https://www.mysql.com/ 点击下载找到方框内选项 点击 在项目文件夹创建lib文件 , 将下载好的驱动器导入 , 再添加到项目即可 步骤一:注册JDBC驱动 在Java中,要与数据库进行交互&…...
ArcGIS基础:自定义创建点线面等样式符号以方便使用
有时,使用ArcGIS自带的符号样式库无法满足我们使用要求,还需要进行调整,可能会浪费一些时间,那么自己新建一些样式符号备用, 需要的时候直接使用,会节省很多时间,大家学会之后,对学…...
蔚来2025届全球校招笔试/测评通关攻略北森测评题库更新了!
蔚来2025届全球校园招聘笔试/测评攻略 尊敬的各位考生,蔚来汽车2025届全球校园招聘笔试/测评环节即将开启。为了帮助您更好地准备并顺利通过这一环节,我们特此提供以下详细攻略。 一、考前准备 确认考试时间:请务必在截止日期前完成考试&am…...
如何在linux系统上部署Redis
<1>简介 Redis 全称 Remote Dictionary Server(远程字典服务器),是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务…...
操作系统开发行业的市场需求分析
操作系统作为计算机软件生态的核心,其开发不仅关乎技术的深度与广度,更与市场需求紧密相连。随着技术的不断进步和各行各业对数字化转型的迫切需求,操作系统开发行业面临着日益复杂且多样化的市场需求。以下从基础功能需求、技术创新需求、行…...
SpringMVC 的 拦截器
Spring MVC 提供了一套拦截器(Interceptor)机制,主要用于处理 Web 请求到达控制器之前或响应离开控制器之后执行一些操作。拦截器可以用于执行预处理(如验证用户身份)和后处理(如清理资源或修改响应&#x…...
Redisson可重入锁原理(基于黑马视频总结,保姆级)
上一篇文章我们基于redis的set nx ex 命令以及Lua脚本实现了基本的分布式锁,但是还存在一下几点问题。于是又引出了redisson。 为什么基于SETNX的分布式锁无法实现可重入 先在method1中获取锁,获取成功后又调用method2,而method2内部也会获取…...
Ubuntu 安装 Watt-Toolkit
一、下载 Watt-Toolkit 下载Watt-Toolkithttps://steampp.net/download 二、设置 Watt-Toolkit 打开 Watt-Toolkit,点击 “网络加速→加速设置,打开证书文件夹” ,当前证书路径为:/home/yammie/.local/share/Steam/Plugins/Acc…...
python中的省略号(...)
下面对python学习中遇到的省略号做个总结 # 1. 前言 在Python中,一切皆对象,...也是对象,它和对象Ellipsis是等价的。对象...和Ellipsis的类型都是ellipsis,代码示例如下。 print(Ellipsis) # 输出:Ellipsis print(…...
第129天:内网安全-横向移动WmiSmbCrackMapExecProxyChainsImpacket
这里这个环境继续上一篇文章搭建的环境 案例一: 域横向移动-WMI-自带&命令&套件&插件 首先上线win2008 首先提权到system权限 wmic是windows自带的命令,可以通过135端口进行连接利用,只支持明文方式,优点是不用上传别…...
ChatGPT教我将MySQL中where find_in_set改成PostgreSQL支持的写法
问题 之前使用Mybatis,在MySQL中使用如下SQL语句没有问题: SELECT * FROM dept WHERE find_in_set(5,dept_parent);现在切换到PostgreSQL,发现find_in_set函数不能使用。 解决 SELECT * FROM dept WHERE 5 ANY(string_to_array(dept_parent, ,));总…...
Python命令模式:掌控你的代码指令
Python命令模式:掌控你的代码指令 在软件工程的浩瀚海洋中,命令模式(Command Pattern)是一盏指引航向的明灯,它将请求或操作封装成对象,从而让代码更加灵活、可扩展。本文将深入探讨Python中的命令模式&am…...
【物联网】(防水篇)电子产品 IPX7 防水级别测试的具体流程
电子产品 IPX7 防水级别测试的具体流程 1. 准备工作: - 准备一个足够大的浸水箱,确保水深至少为 1 米,以满足 IPX7 测试的标准要求。 - 将水温控制在标准温度范围内,通常在 15-35 摄氏度之间,以模拟正常使用环境。 2…...
Redis 实现消息队列
Redis 实现消息队列 文章目录 Redis 实现消息队列导引1. 基于List结构的消息队列2. 基于PubSub的消息队列3. 基于Stream的消息队列(推荐)3.1 XADD3.2 XREAD3.3 XGROUP 导引 消息队列(Message Queue),从概念上来理解就是用来存放消息的队列,最简单的消息…...
模板初阶(详解)
一、泛型编程 为了引出模板,我们来看下面代码,比如要实现不同类型的交换函数,如下: void Swap(int& a, int& b) {int c a;a b;b c; } void Swap(char& a, char& b) {char c a;a b;b c; } void Swap(doubl…...
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
📚 对称加密算法解析:DES、AES及其在pycryptodome 和 crypto-js 模块中的应用 🗝️ DES 算法 算法原理 数据加密标准(DES)是一种对称密钥加密算法,用于保护数据的安全。DES 使用一个 56 位的密钥进行加密…...
C++设计模式(代理模式)
1. 电话虫 在海贼中,有一种神奇的通信工具叫做电话虫(Den Den Mushi),外形如蜗牛,身上带有斑点或条纹或通体纯色,壳顶上有对讲机或按键,不接通时会睡觉,接通时会惊醒,并发…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
用鸿蒙HarmonyOS5实现国际象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...
关于 ffmpeg设置摄像头报错“Could not set video options” 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/148515355 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
边缘计算设备全解析:边缘盒子在各大行业的落地应用场景
随着工业物联网、AI、5G的发展,数据量呈爆炸式增长。但你有没有想过,我们生成的数据,真的都要发回云端处理吗?其实不一定。特别是在一些对响应时间、网络带宽、数据隐私要求高的行业里,边缘计算开始“火”了起来&#…...
