当前位置:网站首页>数组与字符串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;
}
}
边栏推荐
- 建立平衡二叉树简单demo
- NIO知识汇总 收藏这一篇就够了!!!
- new / malloc / delete / free之间的区别
- 卷积神经网络入门
- Delightful Nuxt3 Tutorial (2): Build a Blog Quickly and Easily
- 各种cms getshell技巧
- 西塞罗 论老年
- Phase Vocoder的补充完善,Matlab音频变速不变调、变调不变速
- 自监督论文阅读笔记 Incremental-DETR:Incremental Few-Shot Object Detection via Self-Supervised Learning
- [frp intranet penetration]
猜你喜欢
MMU 介绍-[TBL/page table work]

寄存器常见指令

SolidWorks 操作视频 | 流体分析结果演示

ucos任务调度原理

001_旭日X3派初探:开箱测试

自监督论文阅读笔记 S3Net:Self-supervised Self-ensembling Network for Semi-supervised RGB-D Salient Object Det

002_旭日X3派初探:TogetherROS安装

自监督论文阅读笔记 Self-Supervised Deep Learning for Vehicle Detection in High-Resolution Satellite Imagery

自监督论文阅读笔记 SimCLRV2 Big Self-Supervised Models are Strong Semi-Supervised Learners

pandoc -crossref插件实现markdwon文档转word后公式编号自定义
随机推荐
2021-03-22
九、请介绍类加载过程,什么是双亲委派模型?
影响PoE供电传输距离的除了网线还有啥?
三分钟看懂二极管的所有基础知识点
浮点型数据在内存中存储的表示
电子元器件和电子元件的区别有那些?
【第一周】深度学习和pytorch基础
增强光学系统设计 | Zemax 全新 22.2 版本产品现已发布!
对象の使用
滚动条 scrollbar 和scrollbar-thumb 样式
神经网络基础
深度学习理论课程第八、九、十章总结
Dynamic adjustment subject web system?Look at this one is enough
自监督论文阅读笔记Index Your Position: A Novel Self-Supervised Learning Method for Remote Sensing Images Sema
Hook初探索
采用Trench肖特基二极管,实现功率密度的显著提升
ZEMAX | 如何使用ZOS-API创建自定义操作数
AI智能剪辑,仅需2秒一键提取精彩片段
How the world's leading medical technology company maximizes design productivity | SOLIDWORKS Product Exploration
[frp intranet penetration]