27. Remove Element

来源:互联网 发布:51talk软件下载 编辑:程序博客网 时间:2024/06/08 03:13

27. Remove Element

题目

给定一个数组和value值,删除所有的value值的对象,并返回新的长度。
不用为另一个数组分配额外的空间,你必须用不变的存储器来适当的实现。
元素的顺序可以被改变,你留下的超过新长度也没关系。

比如:
给定一个输入数组nums = [3,2,2,3],val = 3
你的函数应该返回长度length=2,并且数组的前两个元素变成2。

代码块

import java.util.Arrays;class Solution {public static int removeElement(int[] nums, int val) {        int count = 0;        int j = 0;        for(int i = 0; i < nums.length; i++){            if(nums[i] == val){                count ++;            }else{                nums[j] = nums[i];                j++;            }        }        int k = nums.length - count ;        return k;        }    public static void main(String[] args){         int nums[]= {3, 2, 2, 3};         System.out.println(removeElement(nums,3) );         System.out.println(Arrays.toString(nums));    }}

代码分析

这是第一个自己完全自主编出来程序,虽然是easy,但是也是这几天的积累。看来是有点成效了。
1.本题要求返回去重的长度,所以,需要遍历一遍数组,查找有几个元素与val值相等,然后总长度减去他们的个数就可以了。
2.还要将数组进行更新,所以就用索引 j 来控制。

比如本题输入[3,2,2,3]
返回length = 2,新数组为[2, 2, 2, 3]。

感想:可以根据debug来适当的修改代码,找到了一点点思路。第二,输出Arrays.toString,需要将数组转化为字符串进行输出,不然就是“乱码”(内存地址)。