我已经编码来解决 leetcode 中的问题,但由于某种原因,它在 leetcode 中不被接受,我想知道代码中的问题是什么,因为它在编译器上运行时返回正确的输出。 描述: 给定一个整数数组 nums 和一个整数 val,就地删除 nums 中所有出现的 val。元素的顺序可以改变。然后返回nums中不等于val的元素个数。
// Online Java Compiler
// Use this editor to write, compile and run your Java code online
import java.util.*;
class HelloWorld {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the size of the array");
int n=sc.nextInt();
int[] nums = new int[n];
int k=0, val;
System.out.println("Enter the elements");
for(int i=0;i<nums.length;i++){
nums[i] = sc.nextInt();
}
System.out.println("Enter the value to remove");
val=sc.nextInt();
for(int i=0;i<(nums.length);i++){
if(nums[i]==val){
nums[i]=nums[i]-val;
k++;
}
}
System.out.println("Here are number of elements left "+(nums.length-k)+" Numbers are deleted "+k);
}
}
示例:
Enter the size of the array
4
Enter the elements
2
3
3
2
Enter the value to remove
2
Here are number of elements left 2 Numbers are deleted 2
我试图根据我们需要返回不等于要求删除的值的元素的值来解决这个问题。我只是直接从数组本身中减去它。虽然我在 youtube 的帮助下找到了解决方案,但想了解我在这方面犯的错误。
但是如果我将 'if' 条件更新为这个条件,它就可以在 leetcode 中工作
for (int i = 0; i < (nums.length); i++) {
if (nums[i] != val) {
nums[k] = nums[i];
k++;
}
}
我们不应该写出完整的答案,否则会干扰leetcode平台。 但我很乐意给出这个提示。 您需要对数组进行排序。 https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html
Arrays.sort(nums);