LeetCode 题解(196) : Contains Duplicate II

来源:互联网 发布:惊天破仔仔换头像软件 编辑:程序博客网 时间:2024/06/06 08:53

题目:

Given an array of integers and an integer k, find out whether there are two distinct indicesi and j in the array such that nums[i] = nums[j] and the difference betweeni and j is at most k.

题解:

C++版:

class Solution {public:    bool containsNearbyDuplicate(vector<int>& nums, int k) {        unordered_map<int, int> m;        int index = 0;        for(auto i : nums) {            if(m.find(i) != m.end()) {                if(index - m[i] <= k)                    return true;                else                    m[i] = index;            }            m.insert(pair<int, int>(i, index));            index++;        }        return false;    }};

Java版:

import java.util.Hashtable; public class Solution {    public boolean containsNearbyDuplicate(int[] nums, int k) {        Hashtable<Integer, Integer> m = new Hashtable<>();        for(int i = 0; i < nums.length; i++) {            if(m.containsKey(nums[i])) {                if(i - m.get(nums[i]) <= k)                    return true;                m.put(nums[i], i);            }            m.put(nums[i], i);        }        return false;    }}

Python版:

class Solution(object):    def containsNearbyDuplicate(self, nums, k):        """        :type nums: List[int]        :type k: int        :rtype: bool        """        dict = {}        index = 0        for i in nums:            if i in dict:                if index - dict[i] <= k:                    return True                else:                    dict[i] = index            dict[i] = index            index += 1        return False

0 0
原创粉丝点击