当前位置:网站首页>数组与字符串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 版本产品现已发布!
- SolidWorks 操作视频 | 流体分析结果演示
- 芯片解密工作应该具备哪些条件?唯样商城
- 自监督论文阅读笔记 Incremental-DETR:Incremental Few-Shot Object Detection via Self-Supervised Learning
- 【第一周】深度学习和pytorch基础
- 贴片电阻的结构是怎样的?唯样商城
- MATLAB给多组条形图添加误差棒
- 自监督论文阅读笔记 DenseCL:Dense Contrastive Learning for Self-Supervised Visual Pre-Training
- 五、int和Integer有什么区别?
- 自监督论文阅读笔记 Self-supervised Label Augmentation via Input Transformations
猜你喜欢

Makefile

ZEMAX | 如何围绕空间中的任何点旋转任何元素

基于南航app直减自动出票

关于梯度下降法的一些优化方法

各种cms getshell技巧

How the world's leading medical technology company maximizes design productivity | SOLIDWORKS Product Exploration

IPC通信 - 管道

Delightful Nuxt3 Tutorial (2): Build a Blog Quickly and Easily

Convolutional Nerual Nertwork(CNN)

ZEMAX | 如何使用渐晕系数
随机推荐
window下VS2022封装动态库以及调用动态库
使用JSP实现简单的登录注册功能,并且使用Session跟踪用户登录信息
【第二周】卷积神经网络
芯片解密工作应该具备哪些条件?唯样商城
IPC 通信 - IPC
VS2022 encapsulates static libraries and calls static libraries under window
VCC(电源)和 GND(地)之间电容的作用
cmdline -[command line,__fdt_pointer,initial_boot_params] boot_command_line 获取
Automatic ticket issuance based on direct reduction of China Southern Airlines app
IPC通信 - 管道
贴片电阻的结构是怎样的?唯样商城
AI智能剪辑,仅需2秒一键提取精彩片段
六、对比Vector、ArrayList、LinkedList有何区别?(设计、性能、安全)
Windos 内网渗透之Token的使用
MySql【后面附有练习题】
二叉树常见的问题和解决思路
MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测
深度学习理论课程第八、九、十章总结
[XSS, file upload, file inclusion]
A.1#【内存管理】——1.1.1 node:struct pglist_data