zoukankan      html  css  js  c++  java
  • LN : leetcode 217 Contains Duplicate

    lc 217 Contains Duplicate


    217 Contains Duplicate

    Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

    方法一 Time Limit Exceeded##

    首先想到的就是比较暴力,没有技巧性可言的时间复杂度为O((n^{2}))的方法。显而易见,这个方法非常没有效率,通不过测试, Time Limit Exceeded。

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

    方法二 Time Limit Exceeded##

    运用迭代器iterator的find()函数来查找是否有重复的整数。虽然看上去只有一层循环,但是find()本身就相当于一次循环,所以算法的时间复杂度并没有提高,依旧是O((n^{2}))

    class Solution {
    public:
        bool containsDuplicate(vector<int>& nums) {
            for (int i = nums.size()-1; i > 0; i--) {
                int temp = nums[i];
                nums[i] = NULL;
                vector<int>::iterator result = find( nums.begin( ), nums.end( ), temp);
                if (result != nums.end())    return true;
                nums[i] = temp;
            }
            return false;
        }
    };
    

    方法三 Accepted##

    利用STL中set中元素都是唯一的这一特点,可以用来去重。以此对比vector和set中的数据个数,可以说是很巧妙的方法了。

    #include <set>
    using namespace std;
    class Solution {
    public:
        bool containsDuplicate(vector<int>& nums) {
            return nums.size() > set<int>(nums.begin(), nums.end()).size();        
        }
    };
    
  • 相关阅读:
    koa2学习(二) 中间件router
    行内元素与块级函数的三个区别
    Mobile Matrices
    jquery中attr()与prop()函数用法实例详解(附用法区别)
    jquery 鼠标右键事件、左键单击事件判定
    JS回调函数(callback)
    js关闭当前页面 (窗口)的几种方式总结
    em(倍)与px的区别
    jQuery学习笔记
    通过JS判断联网类型和连接状态
  • 原文地址:https://www.cnblogs.com/renleimlj/p/7517838.html
Copyright © 2011-2022 走看看