[エンコードテスト高得点Kit]ソート


質問リンク

K番目の数

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;

class Solution {
   public int[] solution(int[] array, int[][] commands) {
       List<Integer> ans = new ArrayList<>();
       
       for(int[] com : commands) {
           int[] arr = Arrays.copyOfRange(array, com[0]-1, com[1]);
           Arrays.sort(arr);
           ans.add(arr[com[2]-1]);
       }
   
       return ans.stream().mapToInt(Integer::intValue).toArray();
   }
}

大数

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

class Solution {
   public String solution(int[] numbers) {
       List<String> ans = Arrays.stream(numbers)
               .mapToObj(String::valueOf)
               .collect(Collectors.toList());

       ans.sort((s1, s2) -> (s2 + s1).compareTo(s1 + s2));

       if (ans.get(0).equals("0")) {
           return "0";
       }

       return String.join("", ans);
   }
}
文字列の結合には比較方法が使用されます.

H-Index

import java.util.Arrays;
import java.util.Collections;

class Solution {
   public int solution(int[] citations) {
       
       Integer[] arr = Arrays.stream(citations).boxed().toArray(Integer[]::new);
       Arrays.sort(arr, Collections.reverseOrder());
       
       int cnt = 0;
       for(int n : arr) {
           if(n <= cnt) return cnt;
           cnt++;
       }
       
       return cnt;
   }
}
降順に並べる.(int->Integerに変換してCollections.ReverseOrder()を使用)
cnt変数が宣言され,回転するたびにゲートが+1に与えられる.
降順配列なので、数字は小さくなり、cntは大きくなり、2つの数に比べてcntが等しいか大きくなると、cntは戻ります.
streamの使い方を熟知するためにstreamを使って問題を解決しました.
IDを使わずに解けるのに時間が長くて不便🤔