【Leetcode】数学类汇总
完美数
完美数是指:对于一个正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。注意:1不是完美数。
正因数,或称为正约数,指的是一个整数中大于0的因数。一个数可以被它的因数整除。
如:12的正因数有1,2,3,4,6,12。因数必须是整数,所以任何整数的最小正因数都是1。
1 class Solution { 2 public boolean checkPerfectNumber(int n) { 3 if(n <= 1) return false; 4 int sum = 1; 5 for(int i = 2; i <= Math.sqrt(n); i++){ 6 if(n % i == 0){ 7 if (i * i == n){ 8 sum += i; 9 }else{ 10 sum = sum + i + n / i; 11 } 12 } 13 } 14 return n==sum; 15 } 16 }
阿拉伯数字转罗马数字
利用贪心的思想,每次找小于num的最大的digit,拼接字符串,并让num-digit[i],直到num超过当前digit,移动digit数组的指针,再看当前的值是否小于num。
1 class Solution { 2 public String intToRoman(int num) { 3 String[] str = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; 4 int[] digit = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; 5 StringBuilder sb = new StringBuilder(); 6 for(int i = 0; i < str.length && num >= 0; i++){ 7 while(digit[i] <= num){ 8 num = num - digit[i]; 9 sb.append(str[i]); 10 } 11 } 12 return sb.toString(); 13 } 14 }