K番目の数


問題の説明


配列のi番からj番までを切り取って並べ替えると、k番目の数字を求めようとします.
例えばarrayが[1,5,2,6,3,7,4],i=2,j=5,k=3の場合
1.arrayの2番目から5番目の場合は[5,2,6,3].
2.1からの配列を[2,3,5,6]に並べ替えた.
3.2の配列の3番目の数字は5です.
配列配列、[i、j、k]を要素とする2次元配列コマンドをパラメータとして与える場合は、commandsのすべての要素に前述の演算を適用した結果を配列に戻してsolution関数を作成します.

せいげんじょうけん

  • arrayの長さは100を超えない.
  • arrayの各要素は1または100未満です.
  • コマンドの長さは50を超えません.
  • コマンドの各要素の長さは3です.
  • I/O例

    array			commnds						return
    [1,5,2,6,3,7,4]	[[2,5,3],[4,4,1],[1,7,3]]	[5,6,3]

    私のコメント(JAVA)

    import java.util.Arrays;
    
    class Solution {
      public int[] solution(int[] array, int[][] commands) {
          int[] answer = new int[commands.length];
          
          for (int i=0; i<commands.length; i++) {
              int start = commands[i][0];
              int end = commands[i][1];
              int num = commands[i][2]-1;
              
              int[] arr = new int[end-start+1];
              int index = 0;
              for (int j=start; j<=end; j++) {
                  arr[index] = array[j-1];
                  index++;
              }
              
              Arrays.sort(arr);
              answer[i] = arr[num];
          }
          
          return answer;
      }
    }

    他の人の解答(JAVA)

    import java.util.Arrays;
    
    class Solution {
        public int[] solution(int[] array, int[][] commands) {
            int[] answer = new int[commands.length];
            
            for (int i=0; i<commands.length; i++) {
                int [] temp = Arrays.copyOfRange(arrays, commands[i][0]-1, commands[i][1]);
                Arrays.sort(temp);
                answer[i] = temp[commands[i][2]-1];
            }
            
            return answer;
        }
    }

    私の解答(JavaScript)

    function solution(array, commands) {
      const answer = [];
      
      for (let i=0; i<commands.length; i++) {
        let start = commands[i][0];
        let end = commands[i][1];
        let num = commands[i][2]-1;
        
        const arr = array.filter((a,i) => (i >= start-1) && (i <end));
        arr.sort((a,b) => a-b);
        answer[i] = arr[num];
      }
      
      return answer;
    }

    他の人の解答(JavaScript)

    function solution(array, commands) {
      return commands.map(command => {
        const [sPosition, ePosition, position] = command;
        const newArray = array
        	.filter((value, fIndex) => (fIndex >= sPosition-1) && (fIndex <= ePosition-1)
            .sort((a,b) => a-b);
                    
        return newArray[position-1];
      });
    }