【java学习记录】Java实现leetcode题目Contains Duplicate

本文介绍了一种使用Python和Java检查数组中是否存在重复元素的方法。在Python中,通过创建字典来跟踪元素出现次数;而在Java中,则利用HashMap实现类似功能,并提供了一个简单的示例程序。
摘要由CSDN通过智能技术生成

给定一个数组,要求写出函数判断该数组是否包含重复元素。使用python的话可以简单使用一个字典来实现:

def solution(nums):
    l = len(nums)
    count = {}
    for i in range(0,l):
        if nums[i] not in count.keys():
            count[nums[i]] = 0
        else:
            return True
    return False
Java中也存在字典不过现在并不常用。相应的,可以使用map接口。使用泛型Map声明一个存储对象m
Map <Integer,Integer> m = new HashMap<Integer,Integer>();

输入Map<int,int>会报错。这是由于使用泛型进行声明时,传入参数必须为一个类,而int为基本类型,此处应该用int的封装类Interger做声明。

应该注意的是在java中不存在“函数”,只有依附于类或对象的“方法”,因此不能把本题中的判断函数定义在mian方法内。

java中的类似功能可以这样实现:

import java.util.*;

public class Entry {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] nums = {1,2,3,4,5,6,7,8,9};                     //此处输入数组
		System.out.println(containsDuplicate(nums));
	}
	public static boolean containsDuplicate(int[] nums){
		Map <Integer,Integer> m = new HashMap<Integer,Integer>();         //定义泛型m,m用于存储以"integer"为键且以"integer"为值的键值对
		int l = nums.length;
		for(int i=0;i<l;i++){
			if(!m.containsKey(nums[i])){
				m.put(nums[i], 1);
				continue;
			}
			else{
				return true;
			}
		}
		return false;
	}
}

这个方法在leetcode中慢于77%的java解决方案,跑完leetcode中的算例大概需要23ms。另一类极快的方法是将数组进行排序后比较相邻数字是否相同,可以在6ms内完成算例。这个结果与排序算法的效率有关。


这里用到了泛型Map。相比与python里的dict可以使用任何对象作为键或值,Java的Map泛型在声明并传入所限定的类型之后就不会在其方法中接收其它传入类型了。应该是一种比较安全的保护机制。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值