安全四〇から六を証明するためにオファー:円残り数

カジュアルワーキング

子供の日は毎年、牛オフは孤児院の子供たちを訪問するためにいくつかの小さな贈り物を準備し、今年も同様です。HF牛オフ、経験豊富なベテランとして、自然に我々はいくつかのゲームを用意しました。その中でも、このようなゲームがあります:まず、子どもたちが大きな円で囲まれてみましょう。彼はその後、ランダムに、数mを割り当てられたので、子どもの数0のgettin数という。贈り物を選ぶ際に、その後、ラインのギフトボックスのいずれかを行うように子どもたちが歌を歌っM-1たびに泣いて、ではない彼の次の子で始まる、円に戻り、0 ... M-1を継続countinは...に行く...最後に残った子まで、あなたが行うことができない、とコレクターズ・エディション(限定された場所ああ!珍しい「名探偵コナン」オフ牛を取得します_)。あなたは、子どもたちが贈り物それを得るであろう、次の試してみたいですか?(注:子供の数は0からN-1である)
ない子供であれば、リターン-1

思考

円循環において、初期値を加算する処理が-1に設定されている所定の値、次回サイクルスキップ、マイナス円プロセス内の値に等しく、サイクルは、最後のを返すようになっています値。

コード

public class Solution {
    public int LastRemaining_Solution(int n, int m) {
      int [] num=new int [n];
        int i=-1;
        int count=n;int p=-1;
        while(count>0){
            i++;
            if(i>=n) i=0;
          if(num[i]==-1)continue;
            p++;
            if(p==m-1){
                num[i]=-1;
                p=-1;
                count--;
            }
        }
        return i;
    }
}
     
公開された68元の記事 ウォン称賛39 ビュー5019

おすすめ

転載: blog.csdn.net/weixin_44015043/article/details/105393032