https://leetcode.cn/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-150
go
func removeElement(nums []int, val int) int { i := 0 j := len(nums) - 1 s := 0 for _, v := range nums { if v == val { s++ } } for i < j { for i <= j && nums[i] != val { i++ } for j >= i && nums[j] == val { j-- } if i < j { nums[i] = nums[j] i++ j-- } } return len(nums) - s }
java
package leetcode150; import org.junit.Test; public class a2_removeElement { @Test public void test(){ int[] nums = {3, 2, 2, 3}; int k = removeElement(nums, 3); System.out.println(k); for (int i = 0; i < k; i++) { System.out.print(nums[i] + " "); } } public int removeElement(int[] nums, int val) { int i = 0, j = nums.length - 1, s = 0; for (int i1 = nums.length - 1; i1 >= 0; i1--) { if (nums[i1] == val) { s++; } } while (i < j) { for (; i <= j && nums[i] != val; i++) { } for (; i <= j && nums[j] == val; j--) { } if (i < j) { nums[i++] = nums[j--]; } } return nums.length - s; } }