如何在資料庫遷移中保證資料一致性?
阿新 • • 發佈:2020-12-10
一、題目描述
二、解法
class Solution { public boolean isHappy(int n) { /** * 方法1:用Set檢測迴圈 */ /*Set<Integer> set = new HashSet<>(); while (n != 1) { if (set.contains(n)) { //如果存在,說明陷入了死迴圈 return false; } set.add(n); n = squareSum(n); } return true;*/ /** * 方法2:類似於快慢指標的思想。 * 慢指標每次做一次轉換,快指標每次做兩次轉換 * 如果出現死迴圈,那麼快的指標(值)一定會追上慢的指標(值) * 如果沒有迴圈重複,那麼最後快慢指標也會相等,且都等於1。 */ int fast = squareSum(n); int slow = n; while (fast != 1 && fast != slow) { fast= squareSum(squareSum(fast)); slow = squareSum(slow); } return fast == 1; } // 把一個數替換成每一位的平方和 private int squareSum(int num) { int res = 0; while (num != 0) { // 一定要牢記程式碼實現取出各個位數字的思路 int temp = num % 10; num /= 10; res+= temp * temp; } return res; } }