[Leetcode] 27. Remove Element
Algorithm2021. 7. 25. 19:44
반응형
Identifying the Problem
주어진 수열들 중 val 값과 같은 경우 수열에서 제거한다.
제한조건
- 0 <= 문자열 길이 <= 100
- 0 <= nums[i] <= 50
- 0 <= val <= 100
- 새로운 배열을 생성해서는 안된다.
- 시간 복잡도는 O(1) 이여야 한다.
Organizing thoughts
buble sort의 원리를 사용해서 val을 거르는 방식을 채택하였다.
Sourcecode
(1) 내가 작성한 코드지만, 시간복잡도 O(1)을 초과한다.
int removeElement(int* nums, int numsSize, int val){
int count = 0;
int temp = 0;
if(numsSize == 0) return 0;
if(numsSize == 1 && nums[0] == val) return 0;
for(int i =0 ; i<numsSize; i++)
if(nums[i] == val)
count++;
if(count == 0) return numsSize;
for(int i = 0; i<count;i++)
for(int k=0; k<numsSize-i-1;k++)
if(nums[k] == val)
{
temp = nums[k+1];
nums[k+1] = nums[k];
nums[k] = temp;
}
return numsSize - count;
}
(2) 아래는 다른 사람이 작성한 코드이다.
int removeElement(int* nums, int numsSize, int val) {
int i, start = 0;
for (i = 0; i < numsSize; i++) {
if(nums[i] != val)
nums[start++] = nums[i];
}
return start;
}
New things learned
- 제한 조건이 O(1)인 경우 index의 역할을 두가지로 나누면 단순화가 가능하다.
반응형
'Algorithm' 카테고리의 다른 글
[Leetcode] 35. Search Insert Position (0) | 2021.07.25 |
---|---|
[Leetcode] 28. Implement strStr() (0) | 2021.07.25 |
[Leetcode] 26. Remove Duplicates from Sorted Array (0) | 2021.07.25 |
[Leetcode] 21. Merge Two Sorted Lists (0) | 2021.07.24 |
[Leetcode] 14. Longest Common Prefix (0) | 2021.07.24 |
댓글()