개발/Algorithm
[leetcode]1630. Arithmetic Subarrays
개발 여행
2022. 3. 29. 10:00
728x90
leetcode 1630. Arithmetic Subarrays
[ 문제 풀이 ]
매개변수 nums, l, r가 주어질 때, 각 원소의 차이가 모두 일정한지 boolean형의 element가 담긴 list를 리턴하는 문제이다.
nums는 숫자를 담고 있는 배열, l은 시작 인덱스를 담고 있는 배열, r은 끝 인덱스를 담고 있는 배열이다.
예를 들어 매개변수가 아래와 같을 때,
nums = [4,6,5,9,3,7], l = [0,0,2], r = [2,3,5]
nums 배열에서 0(l[0]) ~ 2(r[0])까지의 배열 [4, 6, 5]는 [6, 5, 4]로 재배열 할 수 있고, 각 원소는 1씩 차이나므로 true,
nums 배열에서 0(l[1]) ~ 3(r[1])까지의 배열 [4, 6, 5, 9]는 각 원소의 차이가 달라 재배치할 수 없으므로 false,
nums 배열에서 0(l[2]) ~ 3(r[5])까지의 배열 [5, 9, 3, 7]은 [3, 5, 7, 9]로 재배치 할 수 있고, 각 원소는 2씩 차이나므로 true,
따라서 [true, false, true]를 리턴하면 된다.
[ 코드 ]
/**
* @param {number[]} nums
* @param {number[]} l
* @param {number[]} r
* @return {boolean[]}
*/
const checkArithmeticSubarrays = function(nums, l, r) {
const chechArithmetic = (arr) => {
const diff = arr[1] - arr[0];
for (let i = 2; i < arr.length; i++) {
const currentDiff = arr[i] - arr[i - 1];
if (currentDiff !== diff) {
return false;
}
return true;
}
};
return l.map((_, i) =>
chechArithmetic(nums.slice(l[i], r[i] + 1).sort((a, b) => a - b))
);
};
728x90