[LeetCode] 240201 Divide array into arrays with max difference

김동연·2024년 2월 1일

알고리즘

목록 보기
8/12
post-thumbnail

리트코드 0201 데일리 문제

Divide array into arrays with max difference

풀이

정렬하고 최소값 최대값 차이가 k이하이면 된다. 굉장히 쉬운문제

과정

배열을 정렬하고 3개씩 방문하며 3개에서 첫째 값과 셋째 값의 차이가 k 이하이면 3개의 배열을 저장하고 아니면 함수를 종료하고 빈찬합을 준다

과정

  1. 배열을 정렬한다
  2. 배열을 3개씩 방문한다
  3. 첫째값과 세번째 값의 차이와 k를 비교한다
    3.1 k보다 작거나 같을 경우 3개의 배열을 정답에 저장한다
    3.2 k보다 클 경우 함수(프로그램)을 종료하고 빈 배열을 반환한다

순서도

코드

import java.util.*;
class Solution {
    public int[][] divideArray(int[] nums, int k) {
        Arrays.sort(nums);
        int size = nums.length / 3;
        int[][] answer = new int[size][];
        for(int i = 0; i < size; i ++){
            int first = nums[i * 3 + 0];
            int second = nums[i * 3 + 1];
            int third = nums[i * 3 + 2];
            if (third - first > k){
                return new int[0][];
            }
            answer[i] = new int[]{first,second,third};
        }
        return answer;
    }
}

0개의 댓글