Leetcode Java Apply Operations to an Array
업데이트:
문제
코드
class Solution {
public int[] applyOperations(int[] nums) {
int length = nums.length;
int index = 0;
for (int i = 0; i < length; i++) {
if (i < length - 1 && nums[i] == nums[i + 1]) {
nums[i] *= 2;
nums[i + 1] = 0;
}
if (nums[i] != 0) {
if (i != index) {
int temp = nums[i];
nums[i] = nums[index];
nums[index] = temp;
}
index++;
}
}
return nums;
}
}
결과
설명
- nums 내 값들을 아래 규칙대로 수행하고 0이 아닌 값을 좌측으로 몰아 반환하는 문제이다.
- nums[i] == nums[i + 1]의 경우, nums[i]의 값은 두 배로 증가시키고 nums[$i + 1$]의 값은 0으로 바꿔준다.
- 문제 풀이에 필요한 변수를 정의한다.
- length는 nums의 길이를 저장한 변수이다.
- index는 0이 아닌 값이 존재하는 위치를 저장할 변수로, 0으로 초기화한다.
- 0부터 length 미만까지 i를 증가시키며 아래를 반복한다.
- i의 값이 $length - 1$보다 작으면서 nums[i]의 값이 nums[$i + 1$]의 값과 동일하면, nums[i]의 값을 두 배로 증가시키고 nums[$i + 1$]의 위치에 0을 넣어준다.
- nums[i]의 값이 0이 아닌 경우, 아래를 수행한다.
- i가 index와 다른 경우, nums[i]의 값과 nums[index]의 값을 바꾸어준다.
- index를 증가시켜 다음 위치로 이동시켜준다.
- 반복이 완료되어 수정된 배열 nums를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기