【leetcode】第一章数组
704. 二分查找
- 边界值需注意
- left代表左边界下标值,right代表右边界的下标值
- 当数组只有一个元素时,此时如果找到该元素应该返回下标
0,因此条件为left<=right - 当mid的元素值大于target时,此时说明我们想找的target在右边,因此需要改变右边界的值,
right=mid-1。当mid的元素小于target同理。
public int search(int[] nums, int target) {int left = 0;int right = nums.length-1;int mid;while (left <= right) {mid = left + (right-left)/2;if (nums[mid] == target) {return mid;}else if (nums[mid] > target) {right = mid - 1;}else {left = mid + 1;}}return -1;}
27. 移除元素
1. 暴力解法
public int removeElement(int[] nums, int val) {// 暴力解法int size = nums.length;for (int i = 0; i < size; i++) {// 若遇到val元素,则更新数组if (nums[i] == val) {for (int j = i+1; j < size; j++) {nums[j-1] = nums[j];System.out.println("size:"+size);}size--;i--; // 由于整体向前移动了一位,因此该位的值需要进行判断,所以需要保持不动}}return size;}
2. 双指针方法
- 定义一个left指针,一个right指针,left指向需要移除的元素,right指针用来跳过val元素,不断来更新新的元素数组。
- 只要
nums[right]不为val,则更新left指针的元素值,并同时递增两个索引。重复这一过程,直到right到达数组末尾。left为移除元素后的数组长度。
public int removeElement(int[] nums, int val) {int left = 0;for (int right = 0; right < nums.length; right++) {if (nums[right] != val) {nums[left] = nums[right];left++;}}return left;}
3. 双指针优化方法
- 当删除的元素很少的时候(假设该数组只有第一个元素需要删除),此时使用第一种方法,假设
n为数组元素的数量,则赋值操作需要进行n-1次,因此需要进行优化。 - 当需要删除元素很少时(假设该数组只有第一个元素需要删除),我们只需要交换第一个元素和最后一个元素的值即可。因此我们定义
left指针指向第一个元素,right指针指向最后一个元素,若遇到要移除的元素时,便将left此处的值赋为right位置的值。
public static int removeElement(int[] nums, int val) {int left = 0;int right = nums.length - 1;int size = nums.length;while (left < size) {if (nums[left] == val) {nums[left] = nums[right];right--;size--;}else {left++;}}return size;}
参考链接
- 移除元素双指针方法
相关文章:
【leetcode】第一章数组
704. 二分查找 边界值需注意left代表左边界下标值,right代表右边界的下标值当数组只有一个元素时,此时如果找到该元素应该返回下标0,因此条件为left<right当mid的元素值大于target时,此时说明我们想找的target在右边ÿ…...
01|Java中常见错误或不清楚
补充:length vs length() vs size() 1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法. 3.java中的siz…...
递归的用法和例子
b站视频:https://www.bilibili.com/video/BV1iS4y1e7MJ/?spm_id_from333.999.0.0&vd_source1717654b9cbbc6a773c2092070686a95 # 递归的定义:其实就是自己调用自己,一般用函数的形式来进行 """ 特点: 1、一定…...
极狐GitLab 企业级 CI/CD 规模化落地实践指南(一)
目录 template 引用,减少代码冗余,增强 CI/CD 构建扩展性 问题 1:代码冗余,低效实践 问题 2:维护性难,工作量大 ➤ local ➤ file ➤ remote ➤ template 收益 1:一处修改,多…...
springBoot 简单的demo
springBoot 学习开始 场景开发流程1、创建项目2、导入依赖3、创建启动springBoot 项目的主入口程序4、创建业务程序5、在MainApplication文件运行程序6、将文件打包成jar包 遇到的问题未解决 希望大哥们帮忙--本地运行jar包报错 场景 浏览器发送hello请求,返回“he…...
[国产MCU]-BL602开发实例-实时时钟(RTC)
RTC 文章目录 RTC1、RTC介绍2、RTC使用实例RTC(real-time clock)为操作系统中的实时时钟设备,为操作系统提供精准的实时时间和定时报警功能。当设备下电后,通过外置电池供电,RTC继续记录操作系统时间;设备上电后,RTC提供实时时钟给操作系统,确保断电后系统时间的连续性。…...
大数据Flink(六十三):SqlClient工具的使用
文章目录 SqlClient工具的使用 一、入门...
哈威比例多路阀控制放大器
多路比例阀放大器控制负载敏感原理的比例多路换向阀,它用于与负载无关的、无级调节液压执行元件的运动速度。 多个执行元件可以同时和相互无关地进行工作。 这种类型的阀主要用于行走液压机械(例如:起重控制系统)。 通过选择执行元…...
Java bean 是个什么概念?
Java bean可以把它比作一个"智能的容器",它具备封装数据的能力。 Java bean是一种可重用的软件组件,它主要用于在Java应用程序中存储和传递数据。它是一种符合特定规范的Java类,通过封装数据和提供访问方法,使数据的管…...
微服务系列文章之 Springboot+Vue实现登录注册
一、springBoot 创建springBoot项目 分为三个包,分别为controller,service, dao以及resource目录下的xml文件。 UserController.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 …...
【Docker】如何在设计 dockerfile 过程中,设置容器启动后的定时任务
如何在设计 dockerfile 过程中,设置容器启动后的定时任务 jwensh 2023.08.14 文章目录 如何在设计 dockerfile 过程中,设置容器启动后的定时任务1. 基于 alpine 设计 dockerfile 过程中,设置容器启动后的定时任务2. 基于 CentOS 设计 Dockerf…...
【leetcode】第三章 哈希表part01
242.有效的字母异位词 使用HashMap public boolean isAnagram(String s, String t) {HashMap<Character,Integer> map new HashMap();int sLen s.length();int tLen t.length();if (sLen ! tLen) return false;// 统计词频for (int i 0; i < s.length(); i) {ch…...
Docker中Tomcat部署步骤
第一次访问没有东西。...
pycharm 安装库
这是另一种方式。 搜索到的安装库的方式多数是:在桌面上winR键运行终端,输入命令,安装不了,发现安装不了。 1、打开pycharm; 2、软件下部的Terminal终端(需要运行一个代码才能出现,任何代码都可)…...
使用 Ploomber、Arima、Python 和 Slurm 进行时间序列预测
推荐:使用 NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 简短的笔记本说明 笔记本由 8 个任务组成,如下图所示。它包括建模的大多数基本步骤 - 获取数据清理、拟合、超参数调优、验证和可视化。作为捷径,我拿起笔记本并使用Soorgeon工具…...
springboot第35集:微服务与flutter安卓App开发
Google Playplay.google.com/apps/publis…[1]应用宝open.qq.com/[2]百度手机助手app.baidu.com/[3]360 手机助手dev.360.cn/[4]vivo 应用商店dev.vivo.com.cn/[5]OPPO 软件商店(一加)open.oppomobile.com/[6]小米应用商店dev.mi.com/[7]华为应用市场dev…...
java 把list转成json
在Java中,将List转换成JSON格式是非常常见的任务。JSON是一种轻巧的数据交换格式,非常适合于Web应用程序,特别是前端开发。 使用Java将List转换成JSON格式的最简单方法是通过JSON库。最常用的JSON库是 Jackson,它提供了快速&…...
R语言实现随机生存森林(2)
library(survival) library(randomForestSRC) help(package"randomForestSRC") #构建普通的随机生存森林 data(cancer,package"survival") lung$status<-lung$status-1 rfsrc.fit1 <- rfsrc(Surv(time, status) ~ ., lung,ntree 100,block.size 1,…...
泛型类接口方法学习
一、泛型 1 概念 泛型(Generics),广泛的类型。最大用途是给集合容器添加标签,让开发人员知道容器里面放到是什么类型,并且自动对放入集合的元素进行类型检查。 类比实参和形参,我们在对方法中的变量操作时,并没有指…...
Docker自动化部署安装(十)之安装SonarQube
这里选择的是: sonarqube:9.1.0-community (推荐使用) postgres:9.6.23 数据库(sonarqube7.9及以后便不再支持mysql,版本太低的话里面的一些插件会下载不成功的) 1、docker-sonarqube.yml文件 version: 3 services:sonarqube:container_name: sonar…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
