美文网首页
Leetcode27-去除数组中指定元素

Leetcode27-去除数组中指定元素

作者: 西5d | 来源:发表于2018-03-04 14:55 被阅读14次

输入数组和指定的元素,存在则去除,返回新的数组长度,要求不额外申请数组内存。和之前的数组去重 有类似,但是这个数组是没有排序的,leetcode 第27题。自己做了一个,思路是将匹配的数据移动到数组末尾,从头开始遍历,如果匹配,首先判断是否尾部也匹配,如果不是,则交换,否则再从尾部往前找。这个过程中新的长度递减。代码如下第一部分。
第二部分是其他人提供的解法,非常简洁,这个根据一个假设来实现:如果遍历不等于目标数字,则其就是新数组里对应位置的值。思路非常好。

自己的解法:

import java.util.Arrays;

/**
 * Created by igoso on 18-3-4.
 */
public class DayByDay {

    public static void main(String[] args) {
        int[] arr = {4,3,4,433,34,34,34,535,43,54,364,4,4,4,4,4,4,4,4,4,4,4,4,4,4,44,4,666,6,6,66,6};
        System.out.println(removeElement(arr,4));
        System.out.println(Arrays.toString(arr));
    }

    public static int removeElement(int[] nums, int val) {
        if (nums == null || nums.length == 0) {
            return 0;
        }

        int length = nums.length;
        int j = length - 1;
        for (int i = 0; i < nums.length; i++) {
            if (val == nums[i]) {
                while (i <= j) {
                    if (nums[j] != val) {
                        int t = nums[j];
                        nums[j] = nums[i];
                        nums[i] = t;

                        break;
                    }else {
                        j--;
                    }
                    --length;
                }
            }
        }

        return length;

    }

}

更加简洁的解法:

class Solution {
    public int removeElement(int[] a, int val) {
        int start = 0;
        int len = a.length;
        int begin = 0;
        for (int i = 0; i < len; i++) 
            if (a[i] != val) 
                a[begin++] = a[i];
        return begin;
    }
}

相关文章

  • Leetcode27-去除数组中指定元素

    输入数组和指定的元素,存在则去除,返回新的数组长度,要求不额外申请数组内存。和之前的数组去重 有类似,但是这个数组...

  • 数组练习

    最值: 统计个数: 去除指定元素并重新生成数组

  • Swift 基础语法学习(四)

    数组的简单使用 实例化数组 数组元素的增加 移除数组中的元素 替换数组中指定位置的元素 查询数组中指定位置的元素

  • 15条高效JS技巧!

    延迟函数delay 分割指定长度的元素数组 获取数组交集 字符串前面空格去除与替换 字符串后面空格去除与替换 获取...

  • 数组

    1. 去除数组中的重复元素 题目 已知一个已经排序的数组,去除数组中的重复元素,返回数组的长度。 思路 使用双指针...

  • 让你减少加班的15条高效JS技巧!记得收藏哦

    延迟函数delay 分割指定长度的元素数组 获取数组交集 函数柯里化 字符串前面空格去除与替换 字符串后面空格去除...

  • some和filter、map的区别

    map():通过指定函数处理数组的每个元素,并返回处理后的数组。 some():用于检测数组中的元素是否满足指定条...

  • Rreact Native/JS 数组添加/删除/替换元素 合并

    数组添加元素 数组删除元素 数组替换元素 数组合并 查找元素在数组中的位置 将数组内所有元素按指定字符拼接成字符串

  • 数组去重

    请看下面数组,其中的元素有多次重复,请写一个函数来实现去除数组中重复的元素。 使用with改进 对象去除法 通过正...

  • 【超简单】js从数组中随机获取不重复的数据

    给定一个数组,如何从数组中去除指定数量的元素并返回,一下几行代码轻松搞定: 是不是好简单?~

网友评论

      本文标题:Leetcode27-去除数组中指定元素

      本文链接:https://www.haomeiwen.com/subject/iloffftx.html