Kubernetes叢集安裝Istio1.12.1及Kubernetes和Istio版本對照關係
阿新 • • 發佈:2021-12-17
給定正整數n,找到若干個完全平方數(比如1, 4, 9, 16, ...)使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。
給你一個整數 n ,返回和為 n 的完全平方數的 最少數量 。
完全平方數 是一個整數,其值等於另一個整數的平方;換句話說,其值等於一個整數自乘的積。例如,1、4、9 和 16 都是完全平方數,而 3 和 11 不是。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/perfect-squares
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
動態規劃
class Solution { public int numSquares(int n) { int[] dp = new int[n + 1]; for (int i = 1; i <= n; i++) { dp[i] = Integer.MAX_VALUE; for (int j = 1; j * j <= i; j++) { dp[i] = Math.min(dp[i], dp[i - j * j] + 1); } } return dp[n]; } }
數學
心之所向,素履以往 生如逆旅,一葦以航class Solution { public int numSquares(int n) { if (isPerfectSquare(n)) { return 1; } if (checkAnswer4(n)) { return 4; } for (int i = 1; i * i <= n; i++) { int j = n - i * i; if (isPerfectSquare(j)) { return 2; } } return 3; } // 判斷是否為完全平方數 public boolean isPerfectSquare(int x) { int y = (int) Math.sqrt(x + 0.5); return y * y == x; } // 判斷是否能表示為 4^k*(8m+7) public boolean checkAnswer4(int x) { while (x % 4 == 0) { x /= 4; } return x % 8 == 7; } }