java 给定一个整数数组nums,如果任何值在数组中至少出现两次,则返回true,如果每个元素都是不同的,则返回false,Leetcode

k5ifujac  于 2023-04-04  发布在  Java
关注(0)|答案(3)|浏览(167)

这是标题中提到的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

我该怎么补救?

eiee3dmh

eiee3dmh1#

只需要将原始数组的长度与一个经过明显过滤的列表的长度进行比较,而不需要传递数组的大小。

System.out.println(containsDuplicate(new int[] {1,2,3,4,5,6}));
System.out.println(containsDuplicate(new int[] {1,2,3,4,6,6}));

印刷品
x一个一个一个一个x一个一个二个x

k2arahey

k2arahey2#

在你的代码中,输入必须看起来像这样才能解决你的问题:Input
另一个问题是i和j在某个时间点上是相等的。例如,如果i和j都是3,那么你在nums[i] == nums[j]处比较的是相同的数字。
一个附加条件解决了这个问题:

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] && i != j){
               return true;
            }
        }
    }
    return false;
    
}
k2fxgqgv

k2fxgqgv3#

也可以使用set。当添加到set时,如果值不存在,则set.add()返回true,否则返回false

System.out.println(containsDuplicate(new int[] {1,2,3,4,5,6}));
System.out.println(containsDuplicate(new int[] {1,2,3,4,6,6}));

印刷品
x一个一个一个一个x一个一个二个x

相关问题