단순하게 배열을 숫자로 변환하고 +1 한 다음 다시 배열로 변환하는 방식의 경우 배열의 최대 길이가 100이기에 long의 범위를 넘어선다.
따라서 배열의 값들이 0~9 사이 이기 때문에 carry를 통해 계산을 처리하는 방식으로 진행한다.
class Solution {
public int[] plusOne(int[] digits) {
int n = digits.length;
List<Integer> result = new ArrayList<>();
int carry = 1;
for (int i = n - 1; i >= 0; i--) {
int num = digits[i];
if (num + carry >= 10) {
result.add(num + carry - 10);
} else {
result.add(num + carry);
carry = 0;
}
}
if (carry != 0) {
result.add(carry);
}
int[] answer = new int[result.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = result.get(answer.length - 1 - i);
}
return answer;
}
}
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode 155 - Min Stack (0) | 2024.11.02 |
---|---|
LeetCode 74 - Search a 2D Matrix (1) | 2024.10.30 |
LeetCode 198 - House Robber (0) | 2024.10.25 |
LeetCode 130 - Surrounded Regions (0) | 2024.10.22 |
LeetCode 433 - Minimum Genetic Mutation (0) | 2024.10.22 |