Leetcode Java Count Total Number of Colored Cells
업데이트:
문제
코드
class Solution {
public int[] findMissingAndRepeatedValues(int[][] grid) {
int length = grid.length;
int[] result = new int[2];
int[] counts = new int[(length * length) + 1];
for (int[] row : grid) {
for (int value : row) {
if (counts[value] == 1) {
result[0] = value;
} else {
counts[value]++;
}
}
}
for (int i = 1; i < counts.length; i++) {
if (counts[i] == 0) {
result[1] = i;
break;
}
}
if (result[1] == 0) {
result[1] = counts.length;
}
return result;
}
}
결과
설명
-
2차원 정사각형 크기의 배열 grid 내 두 번 존재하는 값과 누락된 값을 찾아 배열로 반환하는 문제이다.
- 문제 풀이에 필요한 변수를 정의한다.
- length는 grid의 길이를 저장한 변수이다.
- result는 결과를 저장할 변수로, 두 값을 반환하기 위해 2 크기의 정수 배열로 초기화한다.
- counts는 grid 내 값의 갯수를 계산하기 위한 변수로, 1-index 기준으로 값의 상한 값까지 들어가기 위해 $(length \times length) + 1$ 크기의 정수 배열로 초기화하한다.
-
grid 내 첫 행부터 마지막 행까지 첫 열부터 마지막 열까지 순차적으로 값들을 탐색하면 중복된 값이 존재하는 경우, result[0]에 해당 값을 넣어주면서 counts 배열 내 값의 갯수를 계산한다.
-
1부터 counts 길이 미만까지 i를 증가시키며, count[i]의 값이 0인 값을 찾아 result[1]에 넣어주고 반복을 중지시킨다.
-
result[1]의 값이 0인 누락된 값이 존재하지 않는 경우, result[1]에 counts.length인 다음 가능한 값을 넣어준다.
- 모든 수행이 완료되어 결과가 저장된 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기