当前位置:网站首页>数组与字符串14-使用双指针移除元素
数组与字符串14-使用双指针移除元素
2022-08-03 05:25:00 【花开花落夏】
使用双指针移除元素
一 题目
源自leetcode官网
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。二 解题
使用两个指针left与right,right遍历整个数组,碰到val值就跳过,left也遍历数组,碰到val值就标记,后续再将其它元素移动到val位置。
class Solution {
public int removeElement(int[] nums, int val) {
int left=0;
for(int right=0;right<nums.length;right++){
if(nums[right]==val){
continue;
}else if(left==right){
left++;
}else {
nums[left]=nums[right];
left++;
}
}
return left;
}
}
三 优化
对于如下所示的数组,当val=3时,若left=right=0,则遍历时需要为除0位置之外的元素都移动位置。
我们可以优化这一流程,设left=0,right=nums.length-1。若left的值等于val,则将right的值移动到left的位置。代码:
class Solution {
public int removeElement(int[] nums, int val) {
int left=0,right=nums.length-1;
while (left<=right){
if(nums[left]==val){
nums[left]=nums[right];
right--;
}else{
left++;
}
}
return left;
}
}
边栏推荐
猜你喜欢
增强光学系统设计 | Zemax 全新 22.2 版本产品现已发布!
常见的电容器有哪些?唯样商城
深度学习理论课程第八、九、十章总结
BurpSuite 进阶玩法
自监督论文阅读笔记DisCo: Remedy Self-supervised Learning on Lightweight Models with Distilled Contrastive
自监督论文阅读笔记Index Your Position: A Novel Self-Supervised Learning Method for Remote Sensing Images Sema
使用JSP实现简单的登录注册功能,并且使用Session跟踪用户登录信息
ZEMAX | How to rotate any element around any point in space
滚动条 scrollbar 和scrollbar-thumb 样式
电子元器件的分类有哪些?
随机推荐
window下VS2022封装静态库以及调用静态库
最优化方法概述
各种cms getshell技巧
JS--正则表达式
自监督论文阅读笔记 S3Net:Self-supervised Self-ensembling Network for Semi-supervised RGB-D Salient Object Det
自监督论文阅读笔记: MoCoV2使用动量对比学习改进基线
cb板上常用的电子元器件都有哪些?
自监督论文阅读笔记 DetCo: Unsupervised Contrastive Learning for Object Detection
卷积神经网络入门
BurpSuite 进阶玩法
001_旭日X3派初探:开箱测试
opencv
Eight, the difference between the interface of the abstract class
自监督论文阅读笔记 SimCLRV2 Big Self-Supervised Models are Strong Semi-Supervised Learners
影响PoE供电传输距离的除了网线还有啥?
2021-03-22
MySql【后面附有练习题】
@JsonProperty和JSONField的区别?
自监督论文阅读笔记 DenseCL:Dense Contrastive Learning for Self-Supervised Visual Pre-Training
内网渗透之PPT票据传递攻击(Pass the Ticket)