aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contains_duplicate.c25
-rw-r--r--contains_duplicate.cpp22
-rw-r--r--contains_duplicate.py27
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]))