有趣的題目

2022-07-19 06:06:11 字數 1118 閱讀 4122

問題:有100個人圍成乙個圈,從1開始報數,報到14的這個人就要退出。然後其他人重新開始,從1報數,到14退出。問:最後剩下的是100人中的第幾個人?

這個題目是自己在做黑馬程式設計師入學測試時遇到的,想了乙個多小時,終於想到了自己的解決方法,網上的過程很繁雜,其實真正的核心**也就4行,上**:

0102

0304

0506

0708

0910

1112

1314

1516

1718

1920

2122

2324

2526

2728

2930

3132

3334

3536

publicclasstest10

//下面的**表示迴圈99次,每次從集合裡刪除乙個元素,代表退出的那個人的編號

//i表示退出的那個人在all集合中的下標

int i = 0;

//迴圈99次

for(int n = 1;n < 100;n++)

//迴圈99次,刪除99個人,剩下的最後乙個,就是你了

system.out.println("最後剩下的是第 " + all.get(0) + " 個人");

/*

* 不難看出,本題最核心的還是求每次迴圈時需要刪除的那個元素的下標。

*/

}

}

**雖少,但不代表時間複雜度就降低了,只是更便於理解了。有興趣的童鞋可以對比下本**和網上**的執行速度

有趣的題目

給定一串數,要求找出滿足sum l,r aim的最長區間 l,r 暴力 列舉起點和終點,o n 優化 如果 l1,r 和 l2,r 的區間和相同且l1重新考慮 我們可以固定終點擊取起點,利用字首和sum陣列,sum i j 1,i array j 當sum r x,我們只需要從1開始找到第乙個sum...

乙個有趣的題目

看到qq群裡有人發了乙個很有意思的題目 如果 昨天是明天就好了,那麼今天就是周五了,請問句中的今天是週幾?晚上睡覺的時候又想起這個問題,發現這個問題還大有文章,其實問題的關鍵在於上面的綠色背景的如果兩個字,既然是如果,那麼思維就可以完全發散,如果時間可以穿越,明天真的可以穿越到昨天,那麼今天其實就是...

一道有趣的迴圈題目

問題 輸入為 n,求乙個 n n的矩陣,規定沿 45度線遞增,形成乙個 zigzag 陣列 jepg 編碼裡取畫素資料的排列順序 用 c 實現。本人的實現思路 在 程式設計師面試寶典 中有另一種解法 問題的實質是把 0,n 1 中的整數依之字形填入乙個二維陣列。於是考慮按之字形遍歷陣列,遍歷時,方向...