首页 > 其他分享 >【LeetCode】27. 移除元素

【LeetCode】27. 移除元素

时间:2024-01-21 16:34:10浏览次数:37  
标签:27 nums int 元素 right 移除 LeetCode left

题目:27. 移除元素


解题思路

  • 给定一个数组,以及一个需要删除的值;要求在 O(1) 的空间复杂度中完成
  • 可考虑采用快慢指针的方式,left 用于记录当前需要进行替换的元素,right 指针用于遍历整个数组
  • 当 right 指针所指的值是待删除元素时,那么 right 右移,left 不动即可
  • 若不是,那么将 right 所指值赋值给left即可
  • 当 left 和 right 指向同一位置是否有影响?当前 right 所指值不需要删除,所以将 right 所指位置的值赋值给 left,即将当前位置的元素赋值给当前元素,自己替换自己,不影响结果。

# Java代码实现
class Solution {
    public int removeElement(int[] nums, int val) {
        if(nums == null || nums.length == 0){
            return 0;
        }

        int left = 0;
        for(int right=0; right<nums.length; right++) {
            if(nums[right] != val) {
                nums[left] = nums[right];
                left++;
            }
        }

        return left;
    }
}

```java class Solution { public int removeElement(int[] nums, int val) { int left = 0, right = 0; while(right < nums.length) { if(nums[right] != val) { nums[left] = nums[right]; left++; right++; } else { right = right + 1; } } return left; } } ```

参考资料:27. 移除元素

标签:27,nums,int,元素,right,移除,LeetCode,left
From: https://www.cnblogs.com/syr463/p/17977985

相关文章

  • Leetcode 066 加一
    https://leetcode.cn/problems/plus-one/description/给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整数不会以零开头。示例1:输入:digits=[1,2,3]输出......
  • 最少交换次数 置换环 LeetCode 2471. 逐层排序二叉树所需的最少操作数目
    voidMain(){ varroot=newTreeNode(1) { left=newTreeNode(3) { left=newTreeNode(7), right=newTreeNode(6) }, right=newTreeNode(2) { left=newTreeNode(5), right=newTreeNode(4) } }; varr=newSolution().Minimu......
  • leetcode 169(摩尔投票)
    Problem:169.多数元素目录思路解题方法复杂度Code思路这里选择采用摩尔投票的方式进行计算众数,这里众数的定义是超过一半的数,假设众数的票为+1,负数的票为-1,则不难得到:当目前的票数为0时,后面的众数仍然是整个数组的众数.根据这个性质设计算法所有数的票面值和为......
  • leetcode 80
    题目描述删除有序数组中的重复项II给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。说明:为什么返回数值是整......
  • 127.nginx内存池创建和重置函数
    127.nginx内存池创建和重置函数#defineNGX_MAX_ALLOC_FROM_POOL(ngx_pagesize-1)//能从内存池中分配的最大的内存1.小块大块内存分界#defineNGX_DEFAULT_POOL_SIZE(16*1024)//默认池子大小#defineNGX_POOL_ALIGNMENT16//内存分配的字节对齐数#define......
  • Leetcode 26 删除数组重复项
    题目描述给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改数......
  • 【2024潇湘夜雨】WIN11_Pro_21H2.22000.2713软件选装纯净版1.15
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_21H2.22000.2713。2.增加部分优化方案,手工精简部分较多。3.OS版本号为22000.2713。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.15.0.5》网卡版、......
  • datawhale-leetcode打卡:001-012题
    这次这十二个题目属于是极限肝出来的,有两个参考了一下题解,还是很有意思。我会按照我个人的感觉去写这个东西。螺旋矩阵(leetcode054)这个题目比较恶心的就是跑圈的过程怎么描述。首先,顺时针一圈下来是先从左到右,顶到最右边i<m,好再往下,顶到最下边i<n,好现在i--往回排,最后j--走完一......
  • AtCoder ABC 273 复盘
    AARecursiveFunction模拟,递归、递推、累乘都可以。我用的累乘。ACCodeBBrokenRounding也是模拟,每次将\(X\leftarrowX\div10^{i-1}\)后判断\(X\bmod10\)是否\(\geq5\),若是,\(X\leftarrowX+10\);若不是,不进行操作。最后再将\(X\div10\)输出。ACCodeC(K+1)-......
  • abc227F - Treasure Hunting
    abc227F依次钦定x为路径上的第k大的数,然后dp即可。#include<cstdio>#include<algorithm>#include<cstring>#include<map>#include<queue>#include<bitset>#include<cmath>#include<set>#include<unordered_map>#definefo(i,......