力扣面试经典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),外形如蜗牛,身上带有斑点或条纹或通体纯色,壳顶上有对讲机或按键,不接通时会睡觉,接通时会惊醒,并发…...
SteamAutoCrack终极指南:三步实现Steam游戏离线自由运行
SteamAutoCrack终极指南:三步实现Steam游戏离线自由运行 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack 对于众多Steam游戏玩家来说,你是否曾遇到过这样的困境&…...
鸽姆智库真理纪元白皮书(学术修订版)真理纪元:贾子科学定理与人类逻辑主权的学术纲要
鸽姆智库真理纪元白皮书(学术修订版)真理纪元:贾子科学定理与人类逻辑主权的学术纲要摘要《真理纪元》以贾子科学定理为理论基石,旨在修正波普尔证伪主义百余年间对科学认知范式的垄断影响。本文以112作为科学体系的基础公理与确定…...
Go反射reflect包高级用法
Go语言反射机制探秘:深入reflect包高级用法 Go语言的反射机制通过reflect包为开发者提供了强大的运行时类型检查与操作能力。尽管反射会带来一定的性能开销,但在需要动态处理类型、实现泛型逻辑或构建框架时,它往往是不可替代的工具。本文将…...
零代码玩转华为云DeepSeek:用Witsy打造专属AI客服的完整避坑指南
零代码玩转华为云DeepSeek:用Witsy打造专属AI客服的完整避坑指南 当电商客服每天需要处理上千条重复咨询,当教育机构的课程顾问被基础问题占满工作时间,传统人工服务模式正面临前所未有的效率瓶颈。据行业调研数据显示,接入智能客…...
基于SpringBoot+Vue的Web在线考试系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
摘要 随着信息技术的快速发展,传统线下考试模式逐渐暴露出效率低下、管理成本高、易受人为干扰等问题。在线考试系统因其高效、灵活、可扩展的特性,成为教育信息化改革的重要方向。尤其在新冠疫情背景下,远程教育和无接触考试需求激增&#x…...
2026山东大学软件学院项目实训(一)
Vue 3工程化实践与组件设计 核心任务概述 本次项目实训聚焦Vue 3前端工程化配置与全局组件开发,目标是通过模块化设计提升代码复用率,并建立规范的前后端协作流程。核心任务包括: 使用Pinia实现全局状态管理基于Ant Design Vue完成响应式布…...
LeetCode 226. 翻转二叉树 详细技术解析(CSDN版)
LeetCode 226. 翻转二叉树 详细技术解析(CSDN版) 题目概述(Problem Statement) 给定一棵二叉树的根节点 root,要求翻转这棵二叉树(即交换每一个节点的左子树和右子树),最终返回翻转后…...
Eidolon与Artsy生态系统的集成:如何构建企业级移动应用
Eidolon与Artsy生态系统的集成:如何构建企业级移动应用 【免费下载链接】eidolon The Artsy Auction Kiosk App. 项目地址: https://gitcode.com/gh_mirrors/ei/eidolon Eidolon作为Artsy Auction Kiosk App,是企业级移动应用开发的典范之作。本文…...
[开源]玄武门之变的多变量数学建模与C++模拟系统——从历史事件到量化分析
引言 公元626年7月2日,唐朝长安城玄武门发生了一场改变中国历史进程的流血政变。秦王李世民伏击太子李建成、齐王李元吉,最终登基为唐太宗,开创了贞观之治。这场“玄武门之变”涉及军事对抗、政治博弈、个人能力、时机把握等诸多复杂因素&am…...
如何让老照片焕发新生?图像超分技术的4大突破与分辨率增强实践
如何让老照片焕发新生?图像超分技术的4大突破与分辨率增强实践 【免费下载链接】SwinIR SwinIR: Image Restoration Using Swin Transformer (official repository) 项目地址: https://gitcode.com/gh_mirrors/sw/SwinIR 在数字时代,我们常常遇到…...
