每隔n步迴圈刪除,返回最後乙個元素

2022-02-05 21:35:55 字數 1146 閱讀 8898

題目:有乙個陣列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(刪除),如此迴圈直到最後乙個數被刪除。

題解一: 暴力解法,模擬,一步一步來。

1 #include2

using

namespace

std;34

intmain()

10 vectorv(n);

11for(int i=0;i)

14 vector v_b(n,false

);15

16if(n==1)19

20int count=0; //

刪除的count

21int idx=-1;22

while(count!=n-1)29

}30 v_b[idx]=true

;31 count++;32}

33for(;v_b[idx]==true;idx=(idx+1)%n)

36 cout38return0;

3940 }

題解二:運用佇列的思想進行迴圈插入和刪除。

1 #include2

using

namespace

std;

3int

main()413

int count=0;14

while(q.size()!=1)15

23else

2428}29

int c=q.front();

30 cout32return0;

33 }

題解三: 約瑟夫環問題(以後再看)

1

//遞推公式:f[1] = 0 ,f[n] = (f[n - 1] + k) mod n

//2 #include 3

using

namespace

std;

4int lastnum(int

n) 10

intmain()

Array 陣列刪除最後乙個元素

1 問題描述 做單選題,由於傳入的題目選項為string型別,用分號隔開,所以準備切割分號,然後逐個展示,但是,最後一項有個空格,非常討厭 console.log opts陣列如下 console.log scope.opts 去掉最後乙個元素 空格 var bb scope.opts pop co...

php獲取並刪除陣列的第乙個和最後乙個元素

php中如何獲取並刪除陣列的第乙個或者最後乙個元素?其實這兩個過程都可以通過php自帶的函式 array pop 和 array shift 來完成,下面就具體介紹一下如何來操作。1 使用 array pop 刪除陣列的最後乙個元素,例如 arr array a b c result array p...

解決for迴圈有時只輸出最後乙個結果

我們平常用都是這樣的 for var i 0 i 3 i 有時候列印i出來的是2,也有時候是按照順序打出來的,但是很不穩定。我們要操作就很麻煩,for let i 0 i 3 i 把var換成let就可以了,因為let宣告的變數只在它所在的 塊有效,var命令宣告的變數i,在全域性範圍內都有效,所以...