最も近い人との距離を最大化

座席の列に、1はその席に座っている人を表し、0は、座席が空であることを表しています。

そこに少なくとも1つの空の席があり、少なくとも1人が座って。

アレックスは彼と彼に最も近い人物間の距離が最大になるように席に座ってしたいと考えています。

その返し最も近い人に最大距離を。

class Solution {
    public int maxDistToClosest(int[] seats) {
        int i=0;
        int j=0;
        int res=0;
        for(;j<seats.length;j++){
            if(seats[j]==1){
                if(i==0){
                    res=j;
                }else{
                    res=Math.max(res,(j-i+1)/2);
                }
                i=j+1;
            }
        }
        res=Math.max(res,seats.length-i);
        return res;
    }
}

この問題は、私は、I点0,1および現在位置場合は第1の連続現在位置0、j個の点への電流値を指し、最大距離値に最も近い位置を求めて、座席シートの選択された行に解決されます。最終的に、その後の距離は、Jであり、さもなければ、i及びjはRES =(J-I + 1)/ 2、このような処理として、中間位置、まで次の位置jに最大値、I点をRES、中間位置であり最後の位置が0である場合、配列を横断するために終了しているので、右端の位置で、サイクルが完了すると(席[J] == 1)であれば、最後の場合、時間seats.length-Iから、実行されません次いでseats.length-iが得られる解像度は、最後の解像度で、0である;(席[J] == 1)、この時点で、Iは、J + 1に更新された場合に1つの要素は、それが実行されなければなりません。

おすすめ

転載: blog.csdn.net/qq_30035749/article/details/90072830