此起彼伏;及燈分析
今日面試題:此起彼伏
有這樣一個陣列A,大小為n,相鄰元素差的絕對值都是1.如:
A={4,5,6,5,6,7,8,9,10,9}。
現在,給定A和目標整數t,請找到t在A中的位置。除了依次遍歷,還有更好的方法麼?
===================================================
燈分析
原題
有100盞燈,依次編號1-100,初始都是關著的。第1次遍歷,開啟全部的燈;第2次遍歷,關掉第2盞、第4盞等被2整除的燈;第3次開啟被3整除的燈;第i次,對被i整除的燈做如下操作
如果燈開著,就關掉
如果燈關著,就開啟
如此交替進行,直到100次遍歷完畢,請問,還有多少盞燈亮著。
分析
這個題目比較好玩兒,路子走對了,很簡單。想不對,方法就不是那麼美。
例如,方向不對的話,就按照題目的意思,一遍又一遍的遍歷,直到結束,時間複雜度是O(n^2)的。也能夠解決問題,但是複雜了。
那麼怎麼辦呢?上面的遍歷的做法,是橫向的思路,現在我們縱向思考。一盞燈,會在那幾次被操作。例如編號為100的燈:
第1次能夠操作,開啟
第2次能夠操作,關閉
第4次能夠操作,開啟
第5次能夠操作,關閉
第10次能夠操作,開啟
第20次能偶操作,關閉
第25次能夠操作,開啟
第50次能夠操作,關閉
第100次能偶操作,開啟
最終編號為100的燈是開啟的。再來看編號為70這盞燈:
第1次能夠操作,開啟
第2次能夠操作,關閉
第35次能夠操作,開啟
第70次能夠操作,關閉
最終編號為70的燈關閉著。
通過上面兩個例子,我們會發現,1,2,4,5等都是能夠整除100;1,2,35,70都能夠整除70。 所以,編號為n的燈,有多少個因數,就有會被操作多少次。很顯然,如果是偶數次,則燈一定是關著的。 那什麼情況下,操作會是奇數次呢?一個數,每次分解,都是兩個數相乘,只有當這兩個數相同的時候,才會是偶數次。 所以,最終會亮著的燈,都能夠開平方,得到一個正整數:1,4,9,16,25,36,49,64,81,100.
【分析完畢】
本文來自微信:待字閨中,2013-08-30釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。
相關文章
- 陣列和;及此起彼伏分析陣列
- 燈;及陣列統計分析陣列
- 裁員潮此起彼伏,轉行資料分析師仍舊可期
- 燈燈燈
- 百人開燈問題解法及優化優化
- 嵌入式產品例項分析-智慧檯燈
- Flutter實現Android跑馬燈及滾動廣告FlutterAndroid
- 智慧路燈閘道器特點以及組網方案分析
- PbootCMS模板呼叫幻燈片輪播圖及引數說明boot
- element-ui Carousel 走馬燈原始碼分析整理筆記(十一)UI原始碼筆記
- i.MX6 裸機 彙編 | LED燈硬體原理分析
- 大資料資源爭奪戰此起彼伏,對使用者而言是福是禍大資料
- 燈泡3
- 紅綠燈
- 硬碟亮紅燈伺服器崩潰資料恢復案例分析硬碟伺服器資料恢復
- 相差最大;及逆序分析
- 極光大資料:2018年深圳燈光秀觀秀人群分析大資料
- 國際夜空協會:分析發現全球的人造燈亮度每年增加2.2%
- 前端--開關燈前端
- Flutter 跑馬燈Flutter
- flutter跑馬燈Flutter
- TextView走馬燈TextView
- 【Unity】4.6 燈光Unity
- 流水燈實現
- 排版幻燈片
- iptables 及容器網路分析
- SDWebImage使用及原始碼分析Web原始碼
- DRM 分析及案例講解
- 逆序;及巧妙變換分析
- oracle 索引分析及索引重建Oracle索引
- Oralce中分析表及索引索引
- oracle 定期表及索引分析Oracle索引
- Unsortbin attack原理及分析
- 電動腳踏車 LED 大燈不亮故障分析和維修教程 All In One
- 燈具燈飾企業網路推廣的十二種方案
- Babaali智慧方向燈頭盔:LED燈顯示轉向方向
- 【機器學習】數值分析01——緒論及誤差分析機器學習
- 紅綠燈?——CSS 動畫CSS動畫