對於一個由0..n的所有數按升序組成的序列,我們要進行一些篩選,每次我們取當前所有數字中從小到大的第奇數位個的數,並將其丟棄。重復這一過程直到最后剩下一個數。請求出最后剩下的數字。


輸入描述:
每組數據一行一個數字,為題目中的n(n小於等於1000)。

輸出描述:

一行輸出最后剩下的數字。
我的思路是用兩個鏈表,一個用於存儲原數據,一個用於存儲要丟掉的數據,再循環從元數據中剔除掉即可。
    public static void main(String[] args) {
        int size = 5000;
        LinkedList<Integer> integers = intToLList(size);
        LinkedList<Integer> integers2 = new LinkedList<>();
        while (integers.size() != 1) {
            for (int i = 0; i < integers.size(); i++) {
                if ((i+1)%2 != 0) {
                    integers2.add(integers.get(i));
                }
            }
            for (Integer integer : integers2) {
                integers.remove(integer);
            }
        }
        System.out.println(integers.get(0));
    }

    private static LinkedList<Integer> intToLList(int n) {
        LinkedList<Integer> integers = new LinkedList<>();
        for (int i = 0; i <= n; i++) {
            integers.add(i);
        }
        return integers;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 有17個人圍成一圈(編號為0~16),從第 0號的人開始從 1報數, 凡報到 3的倍數的人離開圈子,然后再數下去,直到最后只剩下一個人為止。 問此人原來的位置是多少號? java解答:有17個人圍成一圈(編號0~16),從第0號的人開始從1報數,凡報到3的倍數的人離開圈子,然后再數下去,直到最后只剩下一個人為止,問此人原來的位置是多少號? Python-函數-寫函數,獲取傳入列表的所有奇數位索引對應的元素,並將其作為新列表返回 2、牛牛想對一個數做若干次變換,直到這個數只剩下一位數字。 變換的規則是:將這個數變成 所有位數上的數字的乘積。比如285經過一次變換后轉化成2*8*5=80. 問題是,要做多少次變換,使得這個數變成個位 用篩選法可得到2~n(n<10000)之間的所有素數,方法是:首先從素數2開始,將所有2的倍數的數從數表中刪去(把數表中相應位置的值置成0);接着從數表中找出下一個非0數,並從數表中刪去該倍數的所有倍數; 以此類推,直到所找到的下一個數等於n為止。這樣會得到一個序列:2,3,5,7,11,13,17,19,23... 獲取一個數二進制序列中所有的偶數位和奇數位,分別輸出二進制序列 輸入一個正整數數組,把數組里所有數字拼接起來排成一個數,打印能拼接出的所有數字的最小的一個 編寫一個函數,計算三個數字的大小,按從小到大的順序輸出。 輸入30個數存入數組a,求出數的每個位數的平方和存入數組b,從小到大排列后輸出(C語言) 有一個數組a[N]順序存放0~N-1,要求每隔兩個數刪掉一個數,到末尾時循環至開頭繼續進行,求最后一個被刪掉的數的原始下標位置。以8個數(N=7)為例:{0,1,2,3,4,5,6,7},0->1->2(刪除)->3->4->5(刪除)->6->7->0(刪除),如此循環直到最后一個數被刪除。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM