• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:LeetCode027移除元素

java 搞代码 3年前 (2022-01-27) 22次浏览 已收录 0个评论

移除元素

题目形容:给你一个数组 nums 和一个值 val,你须要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要应用额定的数组空间,你必须仅应用 O(1) 额定空间并 原地 批改输出数组。

元素的程序能够扭转。你不须要思考数组中超出新长度前面的元素。

示例阐明请见LeetCode官网。

起源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl…
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。

解法一:替换地位
  • 首先,如果数组为空或者数组的长度为0,间接返回0;
  • 而后,如果数组不为空,遍历数组,count记录和val值不雷同的数目(也就是最初的返回值),index示意从0开始遍历,reverseCount示意替换数字的次数,具体遍历过程如下:

    • 当index对应的值不等于val时,count加1,并且index加1也就是往后移一位;
    • 当index对应的值等于val时,判断index是否前面可遍历的位数,如果是,则将index和可遍历的最初一位替换数字,并且rever来源[email protected]搞@^&代*@码网seCount+1,而后持续遍历;如果不是,则没有可替换的地位,即曾经遍历实现。返回count值。
<code class="java">public class LeetCode_027 {
    public static int removeElement(int[] nums, int val) {
        if (nums == null || nums.length == 0) {
            return 0;
        }
        int count = 0;
        int index = 0;
        int reverseCount = 0;
        while (index < nums.length - reverseCount) {
            if (nums[index] != val) {
                index++;
                count++;
            } else {
                if (index < (nums.length - 1 - reverseCount)) {
                    int temp = nums[index];
                    nums[index] = nums[nums.length - 1 - reverseCount];
                    nums[nums.length - 1 - reverseCount] = temp;
                    reverseCount++;
                } else {
                    break;
                }
            }
        }
        return count;
    }

    public static void main(String[] args) {
        int[] nums = new int[]{1};
        System.out.println(removeElement(nums, 1));
        System.out.println();
        for (int num : nums) {
            System.out.print(num + " ");
        }
    }
}

【每日寄语】 昨天是历史,今天是谜团,只有明天是天赐的礼物。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:LeetCode027移除元素
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址