LeetCode题解(Java实现)——27. Remove Element(删除数组中指定元素)

前言

欢迎关注我的 Github,如果觉得有帮助,请点个 star 哟,目前主要在更 leetcode题解(Java版)剑指offer题解(Java版),可以点个star

文本已收录至我的GitHub仓库,欢迎Star:awesome-java-notes

Remove Element

Question:

Given an array and a value, remove all instances of that value in place and return the new length. The order of elements can be changed.
It doesn’t matter what you leave beyond the new length.

Translate:
在一个数组里面移除指定 value,并且返回新的数组长度。 这题唯一需要注意的地方在于 in place,不能新建另一个数组。
Problem-solving ideas:
使用两个游标 i 和 j,遍历数组,遇上非 value 则用 j 记录位置,同时递增 i,直到下一个非 value 出现,将此时 i 位置对应的值复制到 j 位置上,增加 j,重复上述过程直到遍历结束。此时返回 j 的值即为新的数组长度。
The code:
class Solution {
    public int removeElement(int[] nums, int val) {
        int i = 0;
        int j = 0; //j用来记录非value的位置
        /**
        * 从左边开始遍历数组,当前元素如果等于value(即nums[i]==value),则继续执行,
        * 反之,若为非value,则将此时 i 位置对应的值复制到 j 位置上。
        * 
        */
        for (i=0; i<nums.length; i++) {
            if (nums[i] == val) { //若当前元素与指定值value相等,则删除。
                continue;
            } else {
                nums[j] = nums[i]; //将 i 位置对应的值复制到 j 位置上。
                j ++;
            }
        }
        return j;
    }
}

完整实现示例:
/**
 * Given an array and a value, remove all instances of that value in place and return the new length. 
 * The order of elements can be changed. It doesn’t matter what you leave beyond the new length.
 * 解题思路:使用两个游标i和j,遍历数组,遇上非value则用j记录位置,同时递增i,直到下一个非value出现,将此时i对应的值复制到j位置上,
 * 增加j,重复上述过程直到遍历结束。此时返回j的值即为新的数组长度。
 * @author 樱木天亥
 */
public class Solution {

	public static void main(String[] args) {
		int[] arr = {1,2,2,3,2,4};
		System.out.println("新数组的长度为:" + deleteElement(arr, 2));
	}

	public static int removeElement(int[] arr, int value) {
		int i = 0;
		int j = 0; //用来记录非value的位置
		 /**
        * 从左边开始遍历数组,当前元素如果等于value(即nums[i]==value),则继续执行,
        * 反之,若为非value,则将此时 i 位置对应的值复制到 j 位置上
        * 
        */
		for (i=0; i<arr.length; i++) {
			if(arr[i] == value) { //当前元素与指定值value相等,则删除
				continue;
			} else {
				arr[j] = arr[i];
				j ++;
			}
		}
		return j;
	}
}


Performance:

LeetCode题解(Java实现)——27. Remove Element(删除数组中指定元素)_第1张图片

结语

如果你同我一样想要征服数据结构与算法、想要刷 LeetCode,欢迎关注我 GitHub 上的 LeetCode 题解:awesome-java-notes


特别声明:

欢迎转载,转载请注明出处https://blog.csdn.net/Big_Rotor/article/details/79830708

欢迎关注公众号「蜗牛永动机」,回复 1024 免费获取 5G 编程学习资源~

你可能感兴趣的:(Java,leetcode)