27. 移除元素
https://leetcode-cn.com/problems/remove-element/description/
package com.test; import java.util.Arrays; public class Lesson027 { public static void main(String[] args) { // int[] nums = {3, 2, 2, 3}; // int i = removeElement(nums, 3); // System.out.println(i); int[] nums2 = {4,5}; int j = removeElement(nums2, 5); System.out.println(j); } public static int removeElement(int[] nums, int val) { int length = nums.length; // 空数组直接返回 if (length == 0) { return 0; } // 从头开始循环 for (int i = 0; i < length; i++) { int num = nums[i]; // 如果某个元素与指定元素相等 if (num - val == 0) { // 计算最后一个与val不相同的元素位置 for (int j = length - 1; j > 0; j--) { int num_j = nums[j]; if (num_j - val == 0) { length--; } else { break; } } // 替换最后一个不相同的元素 if(i<length){ nums[i] = nums[length-1]; nums[length-1] = val; // 还需要缩短一下length length--; } } } //System.out.println(Arrays.toString(nums)); return length; } }
还是有这样的方法: