Try   HackMD

LeetCode : 0217. Contains Duplicate (array)

tags:leetcode

Vscode be run code

#include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <unordered_map>
using std::vector;
//using std::unordered_map;
using std::unordered_set;
using namespace std;

class BaseVectorPrint {
    public:
        void BasePrint00(vector<int>& num) {
            for (size_t i = 0; i < num.size(); ++i) {
                cout << "[" <<num.at(i) << "]" << "; ";
            }
            cout << endl;
        }

        void BasePrint01(vector<int>& num) {
            for (size_t i = 0; i < num.size(); ++i) {
                cout << num[i] << "; ";
            }
            cout << endl;
        }

        void BasePrint02(vector<int>& num) {
            for (const auto &item : num) {
                cout << item << "; ";
            }
            cout << endl;
        }
        
        void TwoDimensionalPrint(vector<vector<int>> &num){
            for (int i = 0; i < num.size(); i++)
            {
                for (int j = 0; j < num[i].size(); j++)
                {
                    cout << "[" << num[i][j] << "]";
                }
                cout << endl;
            }
        }
};

class BaseSolution {
public:
    bool containsDuplicate(vector<int>& nums) {
        for (int i = 0 ; i<nums.size()-1;i++){
            //time complexity = N
            for(int j = i+1 ; j <nums.size();j++){
                //time complexity = N
                if (nums[i] == nums[j]){
                    return true;
                }
            }
        }
        return false;
    }

    //time complexity O(N^2) (N*N)
    //space complexity O(1)
};

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

    //time complexity O(NLogN) (N * LogN)
    //space complexity O(1)
};

class Solution02 {
public:
    bool containsDuplicate(vector<int>& nums) {
        unordered_set<int> RedBlackTreehashtable;
        //space black and red tree is O(N)
        for (int i = 0 ; i<nums.size();i++){
        //time for loop is O(N)
            if(!RedBlackTreehashtable.insert(nums[i]).second){
                //insert().first = key
                //insert().second = value
                return true;
            }
        }
        return false;
    }
    //time complexity O(N) 
    //space complexity O(N)
};

class Solution03 {
public:
    bool containsDuplicate(vector<int>& nums) {
        std::map<int, int> hmap;
        
        for (int i = 0; i < nums.size(); i++) {
            if (++hmap[nums[i]] > 1) 
                return true;
        }
        
        return false;
    }
    //time complexity O(N) 
    //space complexity O(N)
};

class Solution04 {
public:
    bool containsDuplicate(vector<int>& nums) {
        std::map<int, int> hmap;
        
        for (int i = 0; i < nums.size(); i++) {
            if (++hmap[nums[i]] > 1) 
            //input value if exist , return > 1 else return 0;
                return true;
        }
        
        return false;
    }
    //time complexity O(N) 
    //space complexity O(N)
};

int main(void)
{
    BaseVectorPrint printVector;
    Solution02 RedBlackTree;

    vector<int> test01 = {1,2,3,1};
    vector<int> test02 = {1,2,3,4};
    vector<int> test03 = {1,1,1,3,3,4,3,2,4,2};
    //vector<int> ans ;
    bool TrueOrFlase ;

    TrueOrFlase = RedBlackTree.containsDuplicate(test03);
    //printf("ans : %s\n",TrueOrFlase);
    cout << "ans (1 = True , 2 = False) : " << TrueOrFlase << endl;
    //printVector.BasePrint00(ans);

    //printf("%d\n",input_Nums);
    printf("test\n");
    system("pause");
}

tips use space transformation time complexity
hashmap , hashtable , BlackRedTree