27.移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。
假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:
- 更改
nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
- 返回
k。
思路:
快慢指针,快指针遍历元素,慢指针依次指向和val值相等的元素;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package com.wereash.scut_hot100;
import java.util.Scanner;
public class Solution027 { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); String[] str=scanner.nextLine().split(","); int val=scanner.nextInt(); int n=str.length; int[] nums=new int[n]; for(int i=0;i<n;i++){ nums[i]=Integer.parseInt(str[i]); } int len=0; for (int i=0;i<n;i++){ if(nums[i]!=val){ nums[len++]=nums[i]; } } System.out.println("len="+len); for(int i=0;i<len;i++){ System.out.print(nums[i]+","); }
} }
|