【Leetcode】数学类汇总

时间:2020-05-27
本文章向大家介绍【Leetcode】数学类汇总,主要包括【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 }

原文地址:https://www.cnblogs.com/xdcat/p/12976345.html