Skip to content

Commit decb568

Browse files
committed
solution 217-Contains-Duplicate
1 parent 3162732 commit decb568

File tree

5 files changed

+96
-16
lines changed

5 files changed

+96
-16
lines changed
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# 217. Contains Duplicate (C Language)
2+
3+
## Problem
4+
5+
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.
6+
7+
8+
9+
##### Solution 1.
10+
11+
使用C語言的qsort()來排序,再逐一搜尋是有存在重複元素。
12+
13+
- 字串處理
14+
- Run Time: 12 ms
15+
- 時間複雜度: O(nlogn)
16+
- 空間複雜度: O(1)
17+
18+
```c
19+
int comp (const void * a, const void * b) {
20+
return ( *(int*)a - *(int*)b );
21+
}
22+
23+
bool containsDuplicate(int* nums, int numsSize) {
24+
qsort(nums, numsSize, sizeof(int), comp);
25+
for (int i = 0; i < numsSize - 1; i++) {
26+
if (nums[i] == nums[i+1]) return true;
27+
}
28+
return false;
29+
}
30+
```
+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# 217. Contains Duplicate (Java)
2+
3+
## Problem
4+
5+
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.
6+
7+
8+
9+
##### Solution 1.
10+
11+
使用 Set 容器來記錄每個值,Set 是一個集合會自動拋棄重複數字。
12+
13+
- 字串處理
14+
- Run Time: 16 ms
15+
- 時間複雜度: O(n)
16+
- 空間複雜度: O(n)
17+
18+
```java
19+
class Solution {
20+
public boolean containsDuplicate(int[] nums) {
21+
Set<Integer> set =new HashSet<>();
22+
for(int i=0;i<nums.length;i++) {
23+
set.add(nums[i]);
24+
}
25+
return nums.length != set.size();
26+
}
27+
}
28+
```
29+
30+
##### Solution 2.
31+
32+
使用 Arrays.stream() 的d istinct() 找出不重複的數值數量。
33+
34+
- 字串處理
35+
- Run Time: 16 ms
36+
- 時間複雜度: O(n)
37+
- 空間複雜度: O(1)
38+
39+
```java
40+
class Solution {
41+
public boolean containsDuplicate(int[] nums) {
42+
return Arrays.stream(nums).distinct().toArray().length != nums.length;
43+
}
44+
}
45+
```

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
171.|[Excel Sheet Column Number](https://leetcode.com/problems/excel-sheet-column-number/description/)|Math|Easy|[C](/Algorithms/C/171-Excel-Sheet-Column-Number.md) [Java](/Algorithms/Java/171-Excel-Sheet-Column-Number.md)|
2626
198.|[House Robber](https://leetcode.com/problems/house-robber/description/)|Array|Easy|[C](/Algorithms/C/198-House-Robber.md) [Java](/Algorithms/Java/198-House-Robber.md)|
2727
205.|[Isomorphic Strings](https://leetcode.com/problems/isomorphic-strings/description/)|Array|Easy|[C](/Algorithms/C/205-Isomorphic-Strings.md) [Java](/Algorithms/Java/205-Isomorphic-Strings.md)|
28+
217.|[Contains Duplicate](https://leetcode.com/problems/contains-duplicate/description/)|Array|Easy|[C](/Algorithms/C/217-Contains-Duplicate.md) [Java](/Algorithms/Java/217-Contains-Duplicate.md)|
2829
242.|[Valid Anagram](https://leetcode.com/problems/valid-anagram/description/)|String|Easy|[C](/Algorithms/C/242-Valid-Anagram.md) [Java](/Algorithms/Java/242-Valid-Anagram.md)|
2930
283.|[Move Zeroes](https://leetcode.com/problems/move-zeroes/description/)|Array|Easy|[C](/Algorithms/C/283-Move-Zeroes.md) [Java](/Algorithms/Java/283-Move-Zeroes.md)|
3031
292.|[Nim Game](https://leetcode.com/problems/nim-game/description/)|Math|Easy|[C](/Algorithms/C/292-Nim-Game.md) [Java](/Algorithms/Java/292-Nim-Game.md)|

compiler/C/Main.c

+20-16
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,29 @@
33
#include <string.h>
44
#include <math.h>
55
typedef int bool;
6-
int *twoSum(int *numbers, int numbersSize, int target, int *returnSize);
6+
bool containsDuplicate(int *nums, int numsSize);
77
int main()
88
{
9-
int arr[] = {2, 3, 4, 5, 6};
10-
printf("%d\n", twoSum(arr, 5,8,arr)[0]);
9+
int arr[] = {0};
10+
printf("%d\n", containsDuplicate(arr,1));
1111
}
12-
int *twoSum(int *numbers, int numbersSize, int target, int *returnSize){
13-
int arr[100000] = {0}, i = 0, *ans=(int*)calloc(2,sizeof(int));
14-
for(i=0;i<numbersSize;i++)
15-
{
16-
if (arr[target - numbers[i]+1000] > 0)
17-
{
18-
ans[0] = i + 1 > arr[target - numbers[i] + 1000] ? arr[target - numbers[i] + 1000] : i + 1;
19-
ans[1] = i + 1 < arr[target - numbers[i] + 1000] ? arr[target - numbers[i] + 1000] : i + 1;
20-
break;
21-
}else{
22-
arr[numbers[i] + 1000] = i + 1;
12+
bool containsDuplicate(int *nums, int numsSize)
13+
{
14+
int i=0,j=0,count=0,num=-1;
15+
for(i=0;i<numsSize;i++){
16+
for(j=i+1;j<numsSize;j++){
17+
if(nums[i]>nums[j]){
18+
int temp=nums[i];
19+
nums[i]=nums[j];
20+
nums[j]=temp;
21+
}
22+
}
23+
}
24+
for(i=0;i<numsSize;i++){
25+
if(num!=nums[i]){
26+
count++;
27+
num=nums[i];
2328
}
2429
}
25-
*returnSize=2;
26-
return ans;
30+
return numsSize != count;
2731
}

compiler/C/a.out

-156 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)