배열 { 1,2,3,3,5,} 에서 중복을 찾는 것은 쉽다.
그렇지만 O(N)으로 중복을 찾으려면?
코드 >>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
// Find Duplicates by O(N)
int FindDuplicates(std::vector<int>& nums)
{
int k;
for (int i = 0; i < nums.size(); i++)
{
k = nums[i];
if (nums[k-1] >= 0)
nums[k-1] = -nums[k-1];
else
return nums[i];
}
return -1;
}
int main()
{
std::vector<int> nums = { 1,2,3,3,5,};
int ans = FindDuplicates(nums);
std::cout << ans << std::endl;
return 0;
}
|
'C' 카테고리의 다른 글
c++ O(N)으로 2D matrix 원소 찾기 (0) | 2021.07.04 |
---|---|
c++ 배열 image in-place로 rotate 하기 (0) | 2021.07.04 |
c++ leetcode 배열 Shorted Unsorted Continuous Subarray (0) | 2021.07.03 |
c++ leet code medium merge_interval 구현 (0) | 2021.07.02 |
c++ peak element O(logn)으로 찾기 (0) | 2021.07.02 |