問題:有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
public
class
test10
//下面的**表示迴圈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 中的整數依之字形填入乙個二維陣列。於是考慮按之字形遍歷陣列,遍歷時,方向...