>  기사  >  Java  >  LeetCode DayGreedy 알고리즘 5부

LeetCode DayGreedy 알고리즘 5부

王林
王林원래의
2024-07-18 20:38:30986검색

56. 병합 간격

간격[i] = [starti, endi]인 간격 배열이 주어지면 겹치는 모든 간격을 병합하고 입력의 모든 간격을 포괄하는 겹치지 않는 간격의 배열을 반환합니다.

예 1:

입력: 간격 = [[1,3],[2,6],[8,10],[15,18]]
출력: [[1,6],[8,10],[15,18]]
설명: 간격 [1,3]과 [2,6]이 겹치므로 [1,6]으로 병합합니다.
예시 2:

입력: 간격 = [[1,4],[4,5]]
출력: [[1,5]]
설명: 간격 [1,4]와 [4,5]는 겹치는 것으로 간주됩니다.

제약사항:

1 <= 간격.길이 <= 10^4
간격[i].길이 == 2
0 <= 시작 <= 끝 <= 10^4
원본페이지

    public int[][] merge(int[][] intervals) {
        if(intervals.length <= 1){
            return intervals;
        }
        Arrays.sort(intervals, (a,b)->{
            return Integer.compare(a[0], b[0]);
        });

        List<int[]> list = new ArrayList();
        for(int i=1; i<intervals.length; i++){
            if(intervals[i-1][1] >= intervals[i][0]){
                intervals[i][0] = intervals[i-1][0];
                intervals[i][1] = Math.max(intervals[i-1][1], intervals[i][1]);

            } else{
                list.add(intervals[i-1]);
            }
        }
        list.add(intervals[intervals.length-1]);
        return list.toArray(new int[list.size()][]);
    }




</p>
<h2>
  
  
  738. 모노톤 증가 숫자
</h2>

<p>정수는 인접한 숫자 x와 y의 각 쌍이 x 

</p>
<p>정수 n이 주어지면 n보다 작거나 같은 가장 큰 숫자를 단조롭게 증가하는 숫자로 반환합니다.</p>

<p>예 1:</p>

<p>입력: n = 10<br>
출력: 9<br>
예시 2:</p>

<p>입력: n = 1234<br>
출력: 1234<br>
예시 3:</p>

<p>입력: n = 332<br>
출력: 299</p>

<p>제약사항:</p>

<p>0 
</p>

<pre class="brush:php;toolbar:false">    public int monotoneIncreasingDigits(int n) {
        if(n<10){
            return n;
        }
        String str = Integer.toString(n);
        char[] arr = new char[str.length()];
        arr[0] = str.charAt(0);

        int pos = -1;
        for(int i=1; i<str.length(); i++){
            char num = str.charAt(i);
            if(num < arr[i-1]){
                int j;
                if(pos == -1){
                    j = 0;
                }else{
                    j = pos;
                }
                for(;j<arr.length; j++){
                    if(j==0||j==pos){
                        arr[j] = (char) (arr[j]-1);
                    }else{
                        arr[j] = '9';
                    }
                }
                break;
            }
            else if(num > arr[i-1]){
                pos = i;
            }
            arr[i] = str.charAt(i);
        }
        if(arr[0] <=0){
            // cost space by using String
            str = new String(arr, 1,arr.length);
        }else{
            str = new String(arr);
        }
        return Integer.valueOf(str);
    }

Image description

위 내용은 LeetCode DayGreedy 알고리즘 5부의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.