- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- Java每隔兩個(gè)數刪掉一個(gè)數問(wèn)題詳解
有一個(gè)數組a[N]順序存放0~N-1,要求每隔兩個(gè)數刪掉一個(gè)數,到末尾時(shí)循環(huán)至開(kāi)頭繼續進(jìn)行,求最后一個(gè)被刪掉的數的原始下標位置。
以8個(gè)數(N=7)為例:{0,1,2,3,4,5,6,7},
0->1->2(刪除)->3->4->5(刪除)->6->7->0(刪除)
如此循環(huán)直到最后一個(gè)數被刪除。
輸入:
8輸出:
6
以下是本篇文章正文內容,下面案例可供參考
一看到這個(gè)題目,就想到了隊列的約瑟夫環(huán)的問(wèn)題
此題思路:將兩個(gè)數字取出來(lái)放到隊列的后邊,刪掉第三個(gè)數字,如此循環(huán),當隊列只剩一個(gè)數字的時(shí)候,刪掉它就是最后一個(gè)刪除的數字。
import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main1 { /** * 每日一題-隔兩個(gè)刪數問(wèn)題 * 類(lèi)似于約瑟夫環(huán)問(wèn)題 * @param args */ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); if(scanner.hasNext()) { int n = scanner.nextInt(); Queue<Integer> queue = new LinkedList<>(); for (int i = 0; i < n; i++) { queue.offer(i);//放進(jìn)隊列中 } while(queue.size()>1){ //將兩個(gè)放到隊尾,再刪一個(gè) queue.offer(queue.poll()); queue.offer(queue.poll()); queue.poll(); } System.out.println(queue.poll()); } } }
到此這篇關(guān)于Java每隔兩個(gè)數刪掉一個(gè)數問(wèn)題詳解的文章就介紹到這了,更多相關(guān)Java每隔兩個(gè)數刪掉一個(gè)數 內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站