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

LeetCode面试经典150题(day 1)

LeetCode是一个免费刷题的一个网站,想要通过笔试的小伙伴可以每天坚持刷两道算法题。

接下来,每天我将更新LeetCode面试经典150题的其中两道算法题,一边巩固自己,一遍希望能帮助到有需要的小伙伴。

88.合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。

示例 2:

输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] 。
合并结果是 [1] 。

示例 3:

输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1] 。
合并结果是 [1] 。
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。

 思路:以示例一为例,这是一道难度为简单的数组有关的算法题,我看到这道题的第一反应是直接将nums2中的元素添加到nums1中,然后采用冒泡排序就可以了,但是如果这样的话空间复杂度为O(1),时间复杂度为O(n^2),这显然还有提升的空间

第二种思路: 我们可以从后面开始合并,先把nums1中的3和nums2中的6比较,6比3大,所以,我们就可以将6替换到nums1的最后一个位置,然后nums2的下标向左移动一个,nums1的最后一个下标向左移动一个,如此循环,终止条件为n>=0,m>=0,时间复杂度直接就降低了许多了。

 代码实现:

class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int i = m+n-1;m--;n--;while(n >= 0) {while( m >= 0 && nums1[m] > nums2[n]) {nums1[i--] = nums1[m--];}nums1[i--] = nums2[n--];}}
}

运行结果:

27.移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。

示例 2:

输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

思路:采用双指针

以示例一为例,遍历数组,设置双指针,指针j表示要返回的数组长度,指针i负责遍历数组并与要删除的元素进行比较

代码实现:

class Solution {public int removeElement(int[] nums, int val) {int j = 0;for(int i = 0; i < nums.length;i++) {if(nums[i] != val) {nums[j++] = nums[i];}}return j;}
}

运行结果:

相关文章:

LeetCode面试经典150题(day 1)

LeetCode是一个免费刷题的一个网站&#xff0c;想要通过笔试的小伙伴可以每天坚持刷两道算法题。 接下来&#xff0c;每天我将更新LeetCode面试经典150题的其中两道算法题&#xff0c;一边巩固自己&#xff0c;一遍希望能帮助到有需要的小伙伴。 88.合并两个有序数组 给你两个…...

嵌入式linux之QT交叉编译环境搭建(最简单实测通用版)

这里总结下用于嵌入式linux下的QT交叉编译环境搭建&#xff0c;留作备忘&#xff0c;分享给有需要的小伙伴。不管你的是什么嵌入式linux环境&#xff0c;实测过的通用方法总结。 环境准备 需要准备的环境要求如下&#xff1a; 1.虚拟机(vmvare15.5) 2.ubuntu18.04-x64的linu…...

线性代数的学习和整理14: 线性方程组求解

目录 1 线性方程组 2 有解&#xff0c;无解 3 解的个数 1 线性方程组 A*xy 3根直线的交点&#xff0c;就是解 无解的情况 无解&#xff1a; 三线平行无解&#xff1a;三线不相交 有解 有唯一解&#xff1a;三线相交于一点有无数解&#xff1a;三条线重叠 2 齐次线性方程组…...

Web Components详解-Custom Elements

目录 引言 演变过程 概述 使用方式 创建标签 定义标签 使用标签 获取标签 异步定义标签 升级标签 完整案例 结语 相关代码 参考文章 引言 随着项目体量的增大&#xff0c;组件化和模块化的优势也愈发明显了&#xff0c;构建可重复使用、独立、可互操作的组件变得…...

批量将excel文件按照分类生成多个excel文件

要批量将Excel文件按照分类生成多个Excel文件&#xff0c;文件名为分类名&#xff0c;可以使用Python中的pandas库来实现。下面是示例代码&#xff1a; import pandas as pd import os def split_excel_by_category(file_path, category_column, output_folder): # 读取Ex…...

PCL 点云组件聚类

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 该算法与欧式聚类、DBSCAN聚类很是类似,聚类过程如下所述: 1. 首先,我们需要提供一个种子点集合,对种子点集合进行初始的聚类操作,聚类的评估器(即聚类条件),可以指定为法向评估,也可以是距离评估,以此我…...

学习Linux的注意事项(使用经验;目录作用;服务器注意事项)

本篇分享学习Linux过程中的一些经验 文章目录 1. Linux系统的使用经验2. Linux各目录的作用3. 服务器注意事项 1. Linux系统的使用经验 Linux严格区分大小写Linux中所有内容以文件形式保存&#xff0c;包括硬件&#xff0c;Linux是以管理文件的方式操作硬件 硬盘文件是/dev/s…...

Java字符串

文章目录 String类String的特性String对象的创建String常用方法 StringBuilder类StringBuffer类StringBuffer对象的创建StringBuffer类的常用方法 String、StringBuffer、StringBuilder区别 存放的位置 java.lang.*; 继承的父类 java.lang.Object 实现的接口 java.io.Serializa…...

vue3中props值类型和值的类型

...

windows下安装go环境 和vscode中go扩展

1. 首先安装GO Go下载地址&#xff1a;go.dev 选择相对应的版本&#xff0c;下载&#xff0c;运行安装程序&#xff0c;并打开命令提示符&#xff0c;运行 go env &#xff0c;确认已经安装go 注意关注其中GOPATH和GOROOT&#xff0c;这两个地址可以在系统环境变量中进行设置…...

C++ 面试题(一)--C++基础,面向对象,内存管理

目录 1.part1 C基础 1 C特点 2 说说C语言和C的区别 3 说说 C中 struct 和 class 的区别 4 include头文件的顺序以及双引号""和尖括号<>的区别 5 说说C结构体和C结构体的区别 6 导入C函数的关键字是什么&#xff0c;C编译时和C有什么不同&#xff1f; 7…...

ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享

Algorithm 题目&#xff1a;链表中环的检测 自己的分析见博客《检测链表中是否存在环》 Review disassemble command是我读的一篇英语文章&#xff0c;这篇文章主要是介绍gdb反汇编命令的使用和参数。自己为了能够演示这篇文章里边的内容&#xff0c;特意自己使用汇编语言编…...

皕杰报表(BIOS Report)中设置序号的方法之二

在皕杰报表如何设置序号系列之一里&#xff0c;我们用ds.#0来实现了序号&#xff0c;用ds.#0得到的数据库中选取的记录的序号。有些情况下&#xff0c;记录序号在报表中不是按照顺序显示的&#xff0c;而是在报表中又通过排序或分组后的结果显示的&#xff0c;例如&#xff1a;…...

nacos总结黑马

SpringCloud实用篇02 0.学习目标 1.Nacos配置管理 Nacos除了可以做注册中心&#xff0c;同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多&#xff0c;达到数十、数百时&#xff0c;逐个修改微服务配置就会让人抓狂&#xff0c;而且很容易出错。我…...

【简单bat】写一个定时关机的批处理程序

感谢我那可爱的GPT助手对代码的优化工作。 echo off REM Author: liyang TEL 155-4089-9552echo 欢迎使用自动关机计划设置脚本&#xff01;by LiYang echo.:choose_action set /p "action_choice请选择要执行的操作&#xff08;输入1设置定时关机任务&#xff0c;输入2删…...

Oracle 19c 启动和关闭实例保存PDB状态

简介&#xff1a; 十年以上 MySQL Oracle DBA从业者&#xff0c;MySQL 5.7 OCP&#xff0c; 微信号: jinjushuke 当前有一个PDB 打开模式为READ WRITE [oracleDGMOGGM19C ~]$ sql sys192.168.3.107:1521/pdb1 as sysdba SQLcl: Release 19.1 Production on Wed Aug 23 10:19:…...

计算机毕设 基于机器学习的餐厅销量预测 -大数据 python

文章目录 0 前言餐厅销量预测模型简介2.ARIMA模型介绍2.1自回归模型AR2.2移动平均模型MA2.3自回归移动平均模型ARMA 三、模型识别四、模型检验4.1半稳性检验(1)用途(1)什么是平稳序列?(2)检验平稳性 ◆白噪声检验(纯随机性检验)(1)用途(1)什么是纯随机序列?(2)检验纯随机性 五…...

layui 多选限制选择3个

可以使用 layui 的表单组件进行多选&#xff0c;然后通过 JavaScript 代码限制用户最多只能选择 3 个选项。具体的实现步骤如下&#xff1a; 在 layui 的表单组件中&#xff0c;使用多选框进行多选。 <div class"layui-form-item"><label class"layu…...

PyQt PySide6 QMessageBox使用教程

PySide6 是一个 Python 绑定到 Qt6 库的库&#xff0c;允许你在 Python 中创建 Qt6 应用程序。QMessageBox 是一个提供模式对话框&#xff0c;用于显示消息、询问问题或获取简单的输入的类。 以下是使用 PySide6 中的 QMessageBox 的基本方式&#xff1a; 导入必要的模块: f…...

Visual Studio软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Visual Studio是微软公司开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛应用于Windows平台上的应用程序和Web应用程序的开发。以下是Visual Studio软件的主要特点和功能&#xff1a; 集成开发环境&#x…...

VB电脑销售系统设计与实现

前 言 本文论述了销售管理系统的开发过程,它包括了软件的开发环境,开发工具以及相关技术、系统分析、系统设计、实现等内容。 本系统能为企业繁重的工作带来极大的方便,提高了工作效率及工作准确性,能准确无误地查找货物的综合信息,为企业减少了许多工作细节。 为了使此…...

如何访问MySQL错误日志

通常情况下&#xff0c;MySQL中出现减速、崩溃或其他意外行为的根本原因可以通过分析错误日志来确定。在Ubuntu系统中&#xff0c;MySQL的默认位置是/var/log/mysql/error.log。在许多情况下&#xff0c;使用less程序最容易读取错误日志&#xff0c;这是一个命令行实用程序&…...

redis主从复制详解

目录 前言&#xff1a; 分布式系统 主从模式 主从同步连接过程 replication id作用 offset作用 psync命令&#xff08;psync replicationId offset) 全量复制 全量复制过程 部分复制 部分复制过程 实时复制 前言&#xff1a; redis为了保证高可用&#xff0c;它支持…...

kubernetes/k8s驱逐机制总结篇

概述 k8s的驱逐机制是指在某些场景下&#xff0c;如node节点notReady、node节点压力较大等&#xff0c;将pod从某个node节点驱逐掉&#xff0c;让pod的上层控制器重新创建出新的pod来重新调度到其他node节点。这里也将kube-scheduler的抢占调度纳入到了驱逐的讨论范围内&#…...

Git gui教程---第七篇 Git gui的使用 返回上一次提交

1&#xff0e; 查看历史&#xff0c;打开gitk程序 2&#xff0e; 选中需要返回的版本&#xff0c;右键&#xff0c;然后点击Rest master branch to here 3.出现弹窗 每个选项我们都试一下&#xff0c;从Hard开始 返回的选项 HardMixedSoft Hard 会丢失所有的修改【此处的…...

Web 开发 Django 管理工具

上次为大家介绍了 Django 的模型&#xff0c;通过模型就可以操作数据库&#xff0c;从而就可以改变页面的展示内容&#xff0c;那问题来了&#xff0c;我们只能通过手动编辑模型文件来配置模型吗&#xff1f;当然不是&#xff0c;Django 为我们提供了强大的工具&#xff0c;可以…...

分类算法的评价指标

分类算法的评价指标 查准率、查全率、准确率、F1分数&#xff1a; 查准率&#xff08;Precision&#xff09;&#xff1a; 模型预测为正例的样本中实际未正的比例。它关注的点在&#xff1a;预测为正例样本的准确性。 查全率&#xff08;recall&#xff09;&#xff1a; 模型…...

智能工厂移动式作业轻薄加固三防平板数据采集终端

在这个高度自动化和数字化的环境中&#xff0c;数据采集变得尤为重要。为了满足这个需求&#xff0c;工业三防平板数据采集终端应运而生。工业三防平板数据采集终端采用了轻量级高强度镁合金材质&#xff0c;这使得它在保持轻薄的同时具有更强的坚固性。这种材质还具有耐磨防损…...

Python Flask token身份认证

首先安装依赖&#xff1a; pip install flask-jwt-extended 然后在主应用中&#xff08;项目入口文件&#xff09;加入以下代码&#xff1a; from flask import Flask from flask_jwt_extended import JWTManager #引入依赖 app Flask(__name__) app.config[JWT_SECRET_KEY…...

docker安装rabbitMQ

目录 1、拉取镜像 2、构造镜像 3、开启插件 4、开启安全组 5、访问 ui界面访问不到解决步骤 1、拉取镜像 docker pull rabbitmq 这里拉取的是最新镜像,若要指定版本可在后加上版本号即可&#xff1b;比如 docker pull rabbitmq:3.7.14 2、构造镜像 方式一&#xff1a;交…...

不锈钢网站建设哪家好/海外网站推广的公司

使用tomcat搭建HTTP文件下载服务器 用简单的方法实战演练搭建http服务器(Windows上) 超简单——自己搭建ftp服务器(python nodejs)...

地方门户网站赚钱吗/网络推广属于什么专业

ELM是一种纯功能的、强类型的、反应性的、事件驱动的Web前端语言&#xff0c;与其他客户机框架不同&#xff0c;Elm语言肯定不是“另一个JavaScript库”&#xff0c;但是它也有很多优点。 1.没有HTML和JavaScript的客户端编程 无需在JavaScript中生成HTML&#xff0c;也无需使用…...

大型门户网站源码/seo网站优化方

对于二进制表示的float类型的2.5&#xff0c;其在内存中的表示为01000000 00100000 00000000 00000000&#xff0c;如果我们想打印出它在内存中是如何表示的&#xff0c;那么我们可以用1进行移位&#xff0c;与每个比特进行与运算&#xff0c;还是看看代码吧&#xff1a; 对…...

WordPress自定义json接口/肇庆seo优化

日志统计 #尺取法 #vector容器 #全局变量能开更大的空间哦~ 题目 小明维护着一个程序员论坛。现在他收集了一份"点赞"日志&#xff0c;日志共有N行。其中每一行的格式是&#xff1a; ts id 表示在ts时刻编号id的帖子收到一个"赞"。 现在小明想统计有哪…...

网站建设视频演示/互联网营销师怎么考

一. 为什么要缓存同步 同一进程可以同时在多个内核上执行&#xff08;如果是多线程的&#xff09;&#xff0c;并且可以在进程之间共享内存&#xff0c;因此无论上下文切换发生什么&#xff0c;缓存同步都是不可避免的。 二. 处理器如何查找缓存 当处理器在高速缓存中查找内…...

浙江省住房和城乡建设厅网站/重庆网络推广公司

1.利用时间戳来获得随机数 利用System.currentTimeMillis&#xff08;&#xff09;获得时间的位数&#xff0c;例如&#xff1a;个位&#xff0c;十位&#xff0c;百位…等等。 例如&#xff1a; int number1 (int)(System.currentTimeMillis() % 10); #获得时间个位数 int …...