这是标题中提到的leetcode容易的问题之一。测试用例是:
例一:
输入:数值= [1,2,3,1]
输出:true
实施例2:
输入:nums = [1,2,3,4]
输出:假
我在Java中尝试了以下代码:
import java.util.Scanner;
class Solution {
public static boolean containsDuplicate(int[] nums,int len) {
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
if(nums[i]==nums[j]){
return true;
}
}
}
return false;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("Enter the size of array");
int len=sc.nextInt();
int [] arr=new int[len];
for(int i=0;i<len;i++){
arr[i]=sc.nextInt();
}
if(containsDuplicate(arr,len))
{
System.out.println("true");
}
else{
System.out.println("false");
}
}
我知道上面不是一个理想的解决方案,但由于这是我的第一个问题,主要目的是至少通过所有测试用例。
我收到以下错误:
Line 7: error: method containsDuplicate in class Solution cannot be applied to given types; [in __Driver__.java]
boolean ret = new Solution().containsDuplicate(param_1);
^
required: int[],int
found: int[]
reason: actual and formal argument lists differ in length
我该怎么补救?
3条答案
按热度按时间eiee3dmh1#
只需要将原始数组的长度与一个经过明显过滤的列表的长度进行比较,而不需要传递数组的大小。
印刷品
x一个一个一个一个x一个一个二个x
k2arahey2#
在你的代码中,输入必须看起来像这样才能解决你的问题:Input
另一个问题是i和j在某个时间点上是相等的。例如,如果i和j都是3,那么你在nums[i] == nums[j]处比较的是相同的数字。
一个附加条件解决了这个问题:
k2fxgqgv3#
也可以使用set。当添加到set时,如果值不存在,则
set.add()
返回true
,否则返回false
。印刷品
x一个一个一个一个x一个一个二个x