最小数を削除


🟨 私の答え:
1)処理長が1の場合、その後
2)for文で与えられた配列の中で最小のeleとeleのインデックスを検索する
3)eleインデックスを使用して、0-index index-配列の末尾にある2つの配列を作成します.
4)2つの配列を接続し,最小のeleを取り除き,新しい配列を形成する.
5)長さが1の場合を先に処理し,次に最小値を求める.
import java.io.*;
import java.util.*;
   
   public static int[] solution(int[] arr) {
        int[] answer = new int [arr.length];
        int min = 999999;
        int mindex = 0;
        if(arr.length==1){
            answer[0] = -1;
        }else{
            for(int a= 0; a < arr.length; a++){
                if(arr[a]<min){ min=arr[a];mindex=a;}
            }
            int[] arr1 = Arrays.copyOfRange(arr, 0, mindex);
            int[] arr2 = Arrays.copyOfRange(arr, mindex, arr.length-1);
            answer=Arrays.copyOf(answer,answer.length-1);
            System.arraycopy(arr1, 0, answer, 0, arr1.length);
            System.arraycopy(arr2, 0, answer, arr1.length, arr2.length);

        }
        return answer;
    }
正数が通ると,負数を加えると問題が発生する.
🟩 答え:
1)処理長が1の場合、その後
2)最小値を求める
3)答え配列のminindex以外のすべての値をコピーします.
class Solution {
    public int[] solution(int[] arr) {
        
        if(arr.length == 1) return new int[]{-1};
        
        int minidx = 0;        
        for(int i=0; i<arr.length; i++) {
            if(arr[minidx] > arr[i]) {
                    minidx = i;
            }
        }
        
        int[] answer = new int[arr.length-1];
        int cnt = 0;
        for(int i=0; i<arr.length; i++) {
            if(i == minidx) continue;
            answer[cnt++] = arr[i];
        }
        
        return answer;
    }
}
**似ているように見えますが、より簡潔なコードのようです.