Java每隔兩個(gè)數(shù)刪掉一個(gè)數(shù)問(wèn)題詳解
題目描述
有一個(gè)數(shù)組a[N]順序存放0~N-1,要求每隔兩個(gè)數(shù)刪掉一個(gè)數(shù),到末尾時(shí)循環(huán)至開(kāi)頭繼續(xù)進(jìn)行,求最后一個(gè)被刪掉的數(shù)的原始下標(biāo)位置。
以8個(gè)數(shù)(N=7)為例:{0,1,2,3,4,5,6,7},
0->1->2(刪除)->3->4->5(刪除)->6->7->0(刪除)
如此循環(huán)直到最后一個(gè)數(shù)被刪除。
輸入:
8輸出:
6
以下是本篇文章正文內(nèi)容,下面案例可供參考
解題思路
一看到這個(gè)題目,就想到了隊(duì)列的約瑟夫環(huán)的問(wèn)題
此題思路:將兩個(gè)數(shù)字取出來(lái)放到隊(duì)列的后邊,刪掉第三個(gè)數(shù)字,如此循環(huán),當(dāng)隊(duì)列只剩一個(gè)數(shù)字的時(shí)候,刪掉它就是最后一個(gè)刪除的數(shù)字。
代碼如下
import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main1 { /** * 每日一題-隔兩個(gè)刪數(shù)問(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)隊(duì)列中 } while(queue.size()>1){ //將兩個(gè)放到隊(duì)尾,再刪一個(gè) queue.offer(queue.poll()); queue.offer(queue.poll()); queue.poll(); } System.out.println(queue.poll()); } } }
到此這篇關(guān)于Java每隔兩個(gè)數(shù)刪掉一個(gè)數(shù)問(wèn)題詳解的文章就介紹到這了,更多相關(guān)Java每隔兩個(gè)數(shù)刪掉一個(gè)數(shù) 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- java jdbc連接mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)增刪改查操作
- java中刪除 數(shù)組中的指定元素方法
- JavaScrip數(shù)組刪除特定元素的幾種方法總結(jié)
- java刪除數(shù)組中的某一個(gè)元素的方法
- Java插入修改刪除數(shù)據(jù)庫(kù)數(shù)據(jù)的基本方法
- java 刪除數(shù)組元素與刪除重復(fù)數(shù)組元素的代碼
- java中刪除數(shù)組中重復(fù)元素方法探討
- Java數(shù)組,去掉重復(fù)值、增加、刪除數(shù)組元素的方法
- JAVA中數(shù)組插入與刪除指定元素的實(shí)例代碼
相關(guān)文章
java9新特性Reactive?Stream響應(yīng)式編程?API
這篇文章主要為大家介紹了java9新特性響應(yīng)式編程API的特點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03Springmvc異常處理器及攔截器實(shí)現(xiàn)代碼
這篇文章主要介紹了Springmvc異常處理器及攔截器實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10springboot如何實(shí)現(xiàn)異步響應(yīng)請(qǐng)求(前端請(qǐng)求超時(shí)的問(wèn)題解決)
這篇文章主要給大家介紹了關(guān)于springboot如何實(shí)現(xiàn)異步響應(yīng)請(qǐng)求(前端請(qǐng)求超時(shí)的問(wèn)題解決)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用springboot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-01-01IDEA實(shí)現(xiàn)Maven項(xiàng)目創(chuàng)建并連接Tomcat方式
Maven是一款由Apache開(kāi)發(fā)的項(xiàng)目管理工具,主要用于Java項(xiàng)目的構(gòu)建和依賴(lài)管理,它通過(guò)pom.xml文件自動(dòng)管理項(xiàng)目依賴(lài)的jar包,簡(jiǎn)化了項(xiàng)目構(gòu)建過(guò)程,Maven支持項(xiàng)目從編寫(xiě)源代碼到編譯、測(cè)試、打包、部署的全過(guò)程管理,其依賴(lài)管理功能免去了手動(dòng)添加jar包的麻煩2024-10-10java使用Feign實(shí)現(xiàn)聲明式Restful風(fēng)格調(diào)用
這篇文章主要為大家詳細(xì)介紹了java使用Feign實(shí)現(xiàn)聲明式Restful風(fēng)格調(diào)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04談?wù)凧ava中對(duì)象,類(lèi)和this,super,static關(guān)鍵字的使用
對(duì)象:對(duì)象是類(lèi)的一個(gè)實(shí)例,有狀態(tài)和行為。類(lèi):類(lèi)是一個(gè)模板,它描述一類(lèi)對(duì)象的行為和狀態(tài)。本文就來(lái)和大家聊聊Java中對(duì)象,類(lèi)和關(guān)鍵字的使用,需要的可以參考一下2022-08-08Netty分布式pipeline管道Handler的添加代碼跟蹤解析
這篇文章主要介紹了Netty分布式pipeline管道Handler的添加代碼跟蹤解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03