欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Java培訓(xùn)之索引值實現(xiàn)約瑟夫環(huán)算法

2019-05-07 13:21:42 3308瀏覽

今天千鋒扣丁學(xué)堂Java培訓(xùn)老師給大家分享一篇關(guān)于Java通過索引值實現(xiàn)約瑟夫環(huán)算法的詳細(xì)介紹,下面我們一起來看一下吧。



問題描述:N個人圍成一圈,從第一個人開始報數(shù),報到m的人出圈,

剩下的人繼續(xù)從1開始報數(shù),報到m的人出圈;如此往復(fù),直到所有人出圈

很多實現(xiàn)是使用鏈表結(jié)構(gòu),讓元素構(gòu)成一個圈,而我使用底層是數(shù)組的ArrayList集合實現(xiàn),并且不需要遍歷搜索,依靠數(shù)組特性:索引值,通過數(shù)學(xué)計算,讓索引值構(gòu)成一個圈,每次算出來的索引值,對應(yīng)的那個元素一定是下一個出局的元素

這樣的話,有n個元素,就只需要計算n次,刪除n次,無需搜索,最大程度優(yōu)化了程序的時間

import java.util.ArrayList;
import java.util.Scanner;
public class 約瑟夫環(huán)3 {
    public static void main(String[] args) {
        /*問題描述:N個人圍成一圈,從第一個人開始報數(shù),報到m的人出圈,
        剩下的人繼續(xù)從1開始報數(shù),報到m的人出圈;如此往復(fù),直到所有人出圈*/
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();//n個人
        int m = sc.nextInt();//m號出列
        int count = m;
        ArrayList<Integer> list = new ArrayList<Integer>();
        for(int i = 1 ; i <= n ; i++){
            list.add(i);
        }
            for(; ;){
                if(list.size() == 1){
                    System.out.print(list.get(0) + " ");
                    return;
                }
                if(m <= list.size()){
                    System.out.print(list.get(m-1) + " ");
                    list.remove(m-1);
                    m += count -1;
                 
                }               
                if(list.size() < m){
                    m = m - list.size();
                }
            }
    }
}

以上所述是小編給大家介紹的Java通過索引值實現(xiàn)約瑟夫環(huán)詳解整合,希望對大家有所幫助,

想要學(xué)好Java開發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的Java學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時俱進(jìn)的Java課程體系和Java視頻教程供大家學(xué)習(xí),想要學(xué)好Java開發(fā)技術(shù)的小伙伴快快行動吧??鄱W(xué)堂Java技術(shù)交流群:850353792。


扣丁學(xué)堂微信公眾號                          Python全棧開發(fā)爬蟲人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)分析免費公開課直播間


      【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】         【掃碼進(jìn)入Python全棧開發(fā)免費公開課】



查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 Java開發(fā)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部