日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《剑指offer》孩子们的游戏---约瑟夫问题

發布時間:2024/1/23 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《剑指offer》孩子们的游戏---约瑟夫问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小游戲。其中,有個游戲是這樣的:首先,讓小朋友們圍成一個大圈。然后,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱首歌,然后可以在禮品箱中任意的挑選禮物,并且不再回到圈中,從他的下一個小朋友開始,繼續0…m-1報數….這樣下去….直到剩下最后一個小朋友,可以不用表演,并且拿到??兔F的“名偵探柯南”典藏版(名額有限哦!!^_^)。請你試著想下,哪個小朋友會得到這份禮品呢?(注:小朋友的編號是從0到n-1)

解析:思想是每前進一步就計數一步,計數m個,就移除當前的元素,然后再回退一步,如此往復到只剩一個元素為止。代碼邏輯如下(注意:移除的第一個元素不是第0個,而是第m-1個元素

import java.util.*; public class Solution {public int LastRemaining_Solution(int n, int m) {if(n==0){return -1;}List<Integer> list = new ArrayList<>();for(int i=0;i<n;i++){list.add(i);}int index=-1;int len =0;while (list.size()>1){//一直移除到最后一個元素index=(index+1)%list.size();//索引向前走一步len++;//計數一次if(len==m){//第m個數字的時候就開始移除該位置的元素了list.remove(index);index=(index-1)%list.size();//由于剛移除了一個元素,index需要回退一步,然后重新計數len=0;}}return list.get(0);//最后一個元素就是需要的結果} }

總結

以上是生活随笔為你收集整理的《剑指offer》孩子们的游戏---约瑟夫问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。