资讯专栏INFORMATION COLUMN

Leetcode 27 Remove Element

_ipo / 3103人阅读

摘要:同时我们将这个元素赋值给,这样就可以保证,不等于的个元素完美占据数组的前个位置。方法二当我们遇到和等于值的元素的时候,我们将数组尾端的元素和此元素交换位置。之后减少一位遍历长度。同时在下次遍历中,我们会重新检查新过来的元素。

题目介绍
要求输入:给定数组nums[],数字val
要求输出:数组中不等于val的元素个数n,同时要求不等于数字val的n个元素放置在数组的前n个位置(不要求顺序)
例子
Given nums = [3,2,2,3], val = 3,
Your function should return length = 2, with the first two elements of nums being 2.
方法一
这道题只关注最后数组的前n个元素。所以很容易想到我们遍历整个数组,每当遇到不等于val的值的时候,我们将计数的i值加一。同时我们将这个元素赋值给nums[i],这样就可以保证,不等于val的n个元素完美占据数组的前n个位置。
public int removeElement(int[] nums, int val) {
    int i = 0;
    for (int j = 0; j < nums.length; j++) {
        if (nums[j] != val) {
            nums[i] = nums[j];
            i++;
        }
    }
    return i;
}
方法二

当我们遇到和等于val值的元素的时候,我们将数组尾端的元素和此元素交换位置。之后减少一位遍历长度。同时在下次遍历中,我们会重新检查新swap过来的元素。

public int removeElement(int[] nums, int val) {
    int i = 0;
    int n = nums.length;
    while (i < n) {
        if (nums[i] == val) {
            nums[i] = nums[n - 1];
            // reduce array size by one
            n--;
        } else {
            i++;
        }
    }
    return n;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68173.html

相关文章

  • leetcode-27. Remove Element

    摘要:题目阐释根据告知的元素,从列表中删除,并计算剩余元素的个数重点通过移动一个列表的元素,记录位置,将一个列表内的所有元素分类。 题目阐释: 根据告知的元素,从列表中删除,并计算剩余元素的个数 重点: 通过移动一个列表的元素,记录index位置,将一个列表内的所有元素分类。 计算剩余元素的个数,也可以看成先分类,再统计。 Given an array nums and a value va...

    cgspine 评论0 收藏0
  • LEETCODE刷题记录【27 Remove Element

    摘要:复杂度分析时间复杂度遍历次空间复杂度还有没有优化空间方法在某些特定场景下会进行不必要的复制操作,影响性能。注意尾部的元素有可能是需要剔除的,所以,下一轮循环要从当前索引重新开始。 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的...

    马龙驹 评论0 收藏0
  • leetcode 部分解答索引(持续更新~)

    摘要:前言从开始写相关的博客到现在也蛮多篇了。而且当时也没有按顺序写现在翻起来觉得蛮乱的。可能大家看着也非常不方便。所以在这里做个索引嘻嘻。顺序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 从开始写leetcode相关的博客到现在也蛮多篇了。而且当时也没有按顺序写~现在翻起来觉得蛮乱的。可能大家看着也非常不方便。所以在这里做个索引嘻嘻。 顺序整理 1~50 1...

    leo108 评论0 收藏0
  • [Leetcode] Remove Element 删除数组元素

    摘要:只有不等于给定数字的数,才会被拷贝到子数组的边界上。代码只拷贝非给定数字的元素交换法复杂度时间空间思路因为题目中并不要求相对顺序保持一致,所以有进一步优化的空间。 Remove Element Given an array and a value, remove all instances of that value in place and return the new lengt...

    spacewander 评论0 收藏0
  • [LintCode/LeetCode] Remove Element [Two Pointers]

    摘要:双指针头指针等于指定元素的时候,用尾指针的值替换的值否则头指针继续向后走。最后返回,就是所有非元素的数量。 Problem Given an array and a value, remove all occurrences of that value in place and return the new length. The order of elements can be ch...

    EdwardUp 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<