leetcode系列(19)Contains Duplicate,Contains Duplicate II

来源:互联网 发布:软件研发成果报告 编辑:程序博客网 时间:2024/06/05 14:19

 Contains Duplicate:判断一个数组中是否有重复数字,排序之后扫描整个数组就可以很方便的判断了。

Contailns Duplicate II:Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between iand j is at most k. 这个稍微麻烦点,不能排序,需要一个map存放出现过的数字和下标。

Contain Duplicate C++代码

class Solution {public:    bool containsDuplicate(vector<int>& nums) {        if (nums.empty()) {            return false;        }        std::sort(nums.begin(), nums.end(), std::less<int>());        for (int i = 0; i < nums.size() - 1; ++i) {            if (nums[i] == nums[i + 1]) {                return true;            }        }        return false;    }};


Contain Duplicate Python代码

class Solution:    # @param {integer[]} nums    # @return {boolean}    def containsDuplicate(self, nums):        if not nums:            return False        nums.sort()        for i in range(0, len(nums) - 1):            if nums[i] == nums[i + 1]:                return True        return False


Contain Duplicate II C++代码

class Solution {public:    bool containsNearbyDuplicate(vector<int>& nums, int k) {        if (k <= 0) {            return false;        }                int nsize = nums.size();                if (nsize < 1) {            return false;        }                for (int i = 0; i < nsize; ++i) {            int n = nums[i];            if (umap.find(n) != umap.end()) {                int j = umap[n];                if ((i - j) <= k) {                    return true;                }            }            umap[n] = i; // update index in map        }                return false;    }private:    std::unordered_map<int, int> umap;};


Contain Duplicate II Python代码

class Solution:    # @param {integer[]} nums    # @param {integer} k    # @return {boolean}    def containsNearbyDuplicate(self, nums, k):        ky = {}        len_nums = len(nums)        if k <= 0:            return False        if len_nums <= 1:            return False        for i in range(0, len_nums):            j = ky.get(nums[i])            if j != None:                if (i - j) <= k:                    return True            ky[nums[i]] = i        return False                




0 0
原创粉丝点击