diff options
-rw-r--r-- | contains_duplicate.c | 25 | ||||
-rw-r--r-- | contains_duplicate.cpp | 22 | ||||
-rw-r--r-- | contains_duplicate.py | 27 |
3 files changed, 52 insertions, 22 deletions
diff --git a/contains_duplicate.c b/contains_duplicate.c new file mode 100644 index 0000000..8a07188 --- /dev/null +++ b/contains_duplicate.c @@ -0,0 +1,25 @@ +// 217. Contains Duplicate +#include "leetcode.h" + +/* + * given an integer array 'nums', return true if any value appears at least + * twice in the array, and return false if every element is distinct + */ + +int cmp(const void *a, const void *b) { return (*(int *)a - *(int *)b); } + +bool containsDuplicate(int *nums, int numsSize) { + qsort(nums, numsSize, sizeof(int), cmp); + for (int i = 1; i < numsSize; i++) + if (nums[i] == nums[i - 1]) + return true; + return false; +} + +int main() { + int n1[] = {1, 2, 3, 1}, n2[] = {1, 2, 3, 4}, + n3[] = {1, 1, 1, 3, 3, 4, 3, 2, 4, 2}; + printf("%d\n", containsDuplicate(n1, ARRAY_SIZE(n1))); // expect: 1 + printf("%d\n", containsDuplicate(n2, ARRAY_SIZE(n2))); // expect: 0 + printf("%d\n", containsDuplicate(n3, ARRAY_SIZE(n3))); // expect: 1 +} diff --git a/contains_duplicate.cpp b/contains_duplicate.cpp deleted file mode 100644 index 5de86d2..0000000 --- a/contains_duplicate.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "leetcode.h" - -class Solution { -public: - bool containsDuplicate(vector<int> &nums) { - bool ans = false; - for (int i = 0; i < nums.size(); i++) - for (int j = i + 1; j < nums.size(); j++) - if (nums[i] == nums[j]) - ans = true; - return ans; - } -}; - -int main() { - Solution obj; - vector<int> nums1 = {1, 2, 3, 1}, nums2 = {1, 2, 3, 4}, - nums3 = {1, 1, 1, 3, 3, 4, 3, 2, 4, 2}; - cout << obj.containsDuplicate(nums1) << endl; // expect: 1 - cout << obj.containsDuplicate(nums2) << endl; // expect: 0 - cout << obj.containsDuplicate(nums3) << endl; // expect: 1 -} diff --git a/contains_duplicate.py b/contains_duplicate.py new file mode 100644 index 0000000..840a61e --- /dev/null +++ b/contains_duplicate.py @@ -0,0 +1,27 @@ +# 217. Contains Duplicate + +""" +given an integer array 'nums', return true if any value appears at least +twice in the array, and return false if every element is distinct +""" + + +class Solution(object): + def containsDuplicate(self, nums): + """ + :type nums: List[int] + :rtype: bool + """ + vis = {} + for i in nums: + if i in vis and vis[i] >= 1: + return True + vis[i] = vis.get(i, 0) + 1 + return False + + +if __name__ == "__main__": + obj = Solution() + print(obj.containsDuplicate(nums=[1, 2, 3, 1])) + print(obj.containsDuplicate(nums=[1, 2, 3, 4])) + print(obj.containsDuplicate(nums=[1, 1, 1, 3, 3, 4, 3, 2, 4, 2])) |