정렬되어있는 배열을 받아 두 요소의 합이 0인 요소를 찾아서 리턴해야하는 문제
ex) [-2, -1, 0, 1, 3, 4] => [-1, 1]
function sumZero(arr) {
for(let i = 0; i < arr.length; i++){
for(let j = i + 1; j < arr.length; j++){
if(arr[i] + arr[j] === 0){
return [arr[i], arr[j]]
}
}
}
}
function sumZero(arr) {
let left = 0;
let right = arr.length - 1;
while (left < right) {
let sum = arr[left] + arr[right]
if(sum === 0){
return [arr[left], arr[right]]
} else if(sum < 0) {
left ++
} else if(sum > 0){
right --
}
}
}
정렬된 배열을 받아들이고 배열의 고유 값을 세는 countUniqueValues라는 함수를 구현합니다. 배열에 음수가 있을 수 있지만 항상 정렬됩니다.
countUniqueValues([1, 1, 1, 1, 1, 2]) // 2
countUniqueValues([1, 2, 3, 4, 4, 4, 7, 7, 12, 12, 13]) // 7
countUniqueValues([]) // 0
countUniqueValues([-2, -1, -1, 0, 1]) // 4
function countUniqueValues(arr){
if(arr.length === 0) return 0
let i = 0;
let j = 1;
while(j < arr.length){
if(arr[i] === arr[j]){
j++
} else {
i++
arr[i] = arr[j]
}
}
return i + 1
}