반응형
# 26. Remove Duplicates from Sorted Array
중복값이 존재하는 정렬된 정수 배열이 주어졌을 때, 모든 값들이 한 번씩만 등장하도록 만드는 문제
Sorted Array 를 순차적으로 탐색하면서, 바뀌는 값이 등장할 때마다 이를 배열에 저장하는 방식으로 구현했다.
int removeDuplicates(vector<int>& nums) {
if (nums.size() == 0)
return 0;
int i, j;
for (i = j = 1; j < nums.size(); j++) {
if (nums[j - 1] != nums[j]) {
nums[i++] = nums[j];
}
}
return i;
}
# 27. Remove Element
정수 배열과 Target 값이 주어졌을 때, 배열에서 해당 값을 삭제하는 문제
위의 문제와 유사하게, 두 개의 인덱스를 가지고 탐색을 하면서 삭제하고자 하는 값이 등장하면 그 값을 제외하고 배열에 저장하는 식으로 문제를 해결했다.
int removeElement(vector<int>& nums, int val) {
int i, j;
for (i = j = 0; j < nums.size(); j++) {
if (nums[j] == val) {
continue;
}
nums[i++] = nums[j];
}
return i;
}
# 28. Implement strStr()
두 문자열이 주어졌을 때, 부분 문자열의 시작 위치를 찾는 문제
본래 문자열에서 찾고자 하는 부분 문자열의 길이만큼 Substr 을 저장하고, 슬라이딩 윈도우 방식으로 앞의 문자를 빼고 뒤의 문자를 빼면서 부분 문자열과 비교를 해서 위치를 찾는 방식으로 문제를 해결했다.
int strStr(string haystack, string needle) {
if (needle.size() > haystack.size())
return -1;
else if (needle.size() == haystack.size() && needle != haystack)
return -1;
string comp;
int i;
comp = haystack.substr(0, needle.size());
if (comp == needle)
return 0;
for (i = 1; i + needle.size() - 1 < haystack.size(); i++) {
comp = comp.substr(1) + haystack[i + needle.size() - 1];
if (comp == needle)
return i;
}
return -1;
}
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode # 34 ~ 36] 문제 풀이 (0) | 2021.03.24 |
---|---|
[LeetCode # 31 ~ 33] 문제 풀이 (0) | 2021.03.21 |
[LeetCode # 23 ~ 24] 문제 풀이 (0) | 2021.03.19 |
[LeetCode # 20 ~ 22] 문제 풀이 (0) | 2021.03.18 |
[LeetCode # 17 ~ 19] 문제 풀이 (0) | 2021.03.18 |