当前位置: 首页 > news >正文

力扣面试经典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题

进阶&#xff0c;其他解法 数组 88. 合并两个有序数组 - 力扣&#xff08;LeetCode&#xff09; 1、按非递减顺序合并两个数组 从末尾开始&#xff0c;用while分没到两个数组头&#xff0c;到第一个数组头&#xff0c;到第二个数组头三种情况 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打包&#xff0c;云效&#xff0c;docker&#xff0c;k8s 场景 — 导出excel模板 问题 1.乱码 2.下载为0KB&#xff0c;打开没有数据 模板内容 测试代码 测试方法 方法过程结果问题原因将文件直接放到服务器使用接口下载数据正常,排除文件问题排…...

JDBC连接Mysql数据库超详细讲解

JDBC连接Mysql数据库 如何导入驱动jar包 进入mysql官网 – https://www.mysql.com/ 点击下载找到方框内选项 点击 在项目文件夹创建lib文件 , 将下载好的驱动器导入 , 再添加到项目即可 步骤一&#xff1a;注册JDBC驱动 在Java中&#xff0c;要与数据库进行交互&…...

ArcGIS基础:自定义创建点线面等样式符号以方便使用

有时&#xff0c;使用ArcGIS自带的符号样式库无法满足我们使用要求&#xff0c;还需要进行调整&#xff0c;可能会浪费一些时间&#xff0c;那么自己新建一些样式符号备用&#xff0c; 需要的时候直接使用&#xff0c;会节省很多时间&#xff0c;大家学会之后&#xff0c;对学…...

蔚来2025届全球校招笔试/测评通关攻略北森测评题库更新了!

蔚来2025届全球校园招聘笔试/测评攻略 ​尊敬的各位考生&#xff0c;蔚来汽车2025届全球校园招聘笔试/测评环节即将开启。为了帮助您更好地准备并顺利通过这一环节&#xff0c;我们特此提供以下详细攻略。 一、考前准备 确认考试时间&#xff1a;请务必在截止日期前完成考试&am…...

如何在linux系统上部署Redis

<1>简介 Redis 全称 Remote Dictionary Server&#xff08;远程字典服务器&#xff09;&#xff0c;是一个高性能的(key/value)分布式内存数据库&#xff0c;基于内存运行并支持持久化的NoSQL数据库&#xff0c;是当前最热门的NoSql数据库之一,也被人们称为数据结构服务…...

操作系统开发行业的市场需求分析

操作系统作为计算机软件生态的核心&#xff0c;其开发不仅关乎技术的深度与广度&#xff0c;更与市场需求紧密相连。随着技术的不断进步和各行各业对数字化转型的迫切需求&#xff0c;操作系统开发行业面临着日益复杂且多样化的市场需求。以下从基础功能需求、技术创新需求、行…...

SpringMVC 的 拦截器

Spring MVC 提供了一套拦截器&#xff08;Interceptor&#xff09;机制&#xff0c;主要用于处理 Web 请求到达控制器之前或响应离开控制器之后执行一些操作。拦截器可以用于执行预处理&#xff08;如验证用户身份&#xff09;和后处理&#xff08;如清理资源或修改响应&#x…...

Redisson可重入锁原理(基于黑马视频总结,保姆级)

上一篇文章我们基于redis的set nx ex 命令以及Lua脚本实现了基本的分布式锁&#xff0c;但是还存在一下几点问题。于是又引出了redisson。 为什么基于SETNX的分布式锁无法实现可重入 先在method1中获取锁&#xff0c;获取成功后又调用method2&#xff0c;而method2内部也会获取…...

Ubuntu 安装 Watt-Toolkit

一、下载 Watt-Toolkit 下载Watt-Toolkithttps://steampp.net/download 二、设置 Watt-Toolkit 打开 Watt-Toolkit&#xff0c;点击 “网络加速→加速设置&#xff0c;打开证书文件夹” &#xff0c;当前证书路径为&#xff1a;/home/yammie/.local/share/Steam/Plugins/Acc…...

python中的省略号(...)

下面对python学习中遇到的省略号做个总结 # 1. 前言 在Python中&#xff0c;一切皆对象&#xff0c;...也是对象&#xff0c;它和对象Ellipsis是等价的。对象...和Ellipsis的类型都是ellipsis&#xff0c;代码示例如下。 print(Ellipsis) # 输出&#xff1a;Ellipsis print(…...

第129天:内网安全-横向移动WmiSmbCrackMapExecProxyChainsImpacket

这里这个环境继续上一篇文章搭建的环境 案例一&#xff1a; 域横向移动-WMI-自带&命令&套件&插件 首先上线win2008 首先提权到system权限 wmic是windows自带的命令&#xff0c;可以通过135端口进行连接利用&#xff0c;只支持明文方式&#xff0c;优点是不用上传别…...

ChatGPT教我将MySQL中where find_in_set改成PostgreSQL支持的写法

问题 之前使用Mybatis&#xff0c;在MySQL中使用如下SQL语句没有问题&#xff1a; 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命令模式&#xff1a;掌控你的代码指令 在软件工程的浩瀚海洋中&#xff0c;命令模式&#xff08;Command Pattern&#xff09;是一盏指引航向的明灯&#xff0c;它将请求或操作封装成对象&#xff0c;从而让代码更加灵活、可扩展。本文将深入探讨Python中的命令模式&am…...

【物联网】(防水篇)电子产品 IPX7 防水级别测试的具体流程

电子产品 IPX7 防水级别测试的具体流程 1. 准备工作&#xff1a; - 准备一个足够大的浸水箱&#xff0c;确保水深至少为 1 米&#xff0c;以满足 IPX7 测试的标准要求。 - 将水温控制在标准温度范围内&#xff0c;通常在 15-35 摄氏度之间&#xff0c;以模拟正常使用环境。 2…...

Redis 实现消息队列

Redis 实现消息队列 文章目录 Redis 实现消息队列导引1. 基于List结构的消息队列2. 基于PubSub的消息队列3. 基于Stream的消息队列(推荐)3.1 XADD3.2 XREAD3.3 XGROUP 导引 消息队列(Message Queue)&#xff0c;从概念上来理解就是用来存放消息的队列&#xff0c;最简单的消息…...

模板初阶(详解)

一、泛型编程 为了引出模板&#xff0c;我们来看下面代码&#xff0c;比如要实现不同类型的交换函数&#xff0c;如下&#xff1a; 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` 模块中的应用

&#x1f4da; 对称加密算法解析&#xff1a;DES、AES及其在pycryptodome 和 crypto-js 模块中的应用 &#x1f5dd;️ DES 算法 算法原理 数据加密标准&#xff08;DES&#xff09;是一种对称密钥加密算法&#xff0c;用于保护数据的安全。DES 使用一个 56 位的密钥进行加密…...

C++设计模式(代理模式)

1. 电话虫 在海贼中&#xff0c;有一种神奇的通信工具叫做电话虫&#xff08;Den Den Mushi&#xff09;&#xff0c;外形如蜗牛&#xff0c;身上带有斑点或条纹或通体纯色&#xff0c;壳顶上有对讲机或按键&#xff0c;不接通时会睡觉&#xff0c;接通时会惊醒&#xff0c;并发…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...

生信服务器 | 做生信为什么推荐使用Linux服务器?

原文链接&#xff1a;生信服务器 | 做生信为什么推荐使用Linux服务器&#xff1f; 一、 做生信为什么推荐使用服务器&#xff1f; 大家好&#xff0c;我是小杜。在做生信分析的同学&#xff0c;或是将接触学习生信分析的同学&#xff0c;<font style"color:rgb(53, 1…...

【Java基础】​​向上转型(Upcasting)和向下转型(Downcasting)

在面向对象编程中&#xff0c;转型&#xff08;Casting&#xff09; 是指改变对象的引用类型&#xff0c;主要涉及 继承关系 和 多态。 向上转型&#xff08;Upcasting&#xff09; ⬆️ 定义 将 子类对象 赋值给 父类引用&#xff08;自动完成&#xff0c;无需强制转换&…...