我正在實施快樂號碼計劃。快樂數是一個最終達到的1數字,由每個數字的平方和代替,如果序列中有2個重復的數字,則該數字不是快樂數。
例如:
7 --> 0^2 7^2 = 49 --> 4^2 9^2 = 97 --> 130 --> 10 --> 1 --> happy number
18 --> 65 --> 61 --> |37| --> 58 --> 89 --> 145 --> 42 --> 20 --> 4 --> 16 --> |37| --> not happy number
我的想法是將每個操作的結果存盤到一個陣列中,然后遍歷該陣列以檢查該陣列是否有重復的數字。但我認為這樣做是低效的。
所以想問一下如何在隨機順序陣列中快速找到一個元素,有沒有更高效的程式解決方案?
任何幫助,將不勝感激。
uj5u.com熱心網友回復:
請注意,對于 4 位數字,接下來的數字是 92 92 92 92 = 324,這是一個 3 位數字。
因此,對于任何 ≥4 位(沒有前導零)的數字,序列中的下一個數字明顯減少,因此在您達到最多 3 位數字之前,您不會有重復項。
然后,您可以創建一個名為的陣列wasAlreadyCalculated[999],用于通知該數字是否已在序列中計算過。因此,當您上一步時,您會檢查該號碼是否已被檢查。如果是,那么您沒有一個快樂的數字。否則,您將該數字標記為已選中并繼續操作,直到找到 1 或找到重復項。
不完全是最干凈的方式,但它有效且有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379847.html
上一篇:函式做一個盡可能多的操作
下一篇:段錯誤推送到C行內匯編中的堆疊
