LeetCode 2894.分类求和并作差
目录
题目:
题目描述:
题目链接:
思路:
思路一详解(遍历 + 判断):
思路二详解(数学规律/公式):
代码:
Java思路一(遍历 + 判断)代码:
Java思路二(数学规律/公式)代码:
题目:
题目描述:
题目链接:
2894. 分类求和并作差 - 力扣(LeetCode)
思路:
思路一详解(遍历 + 判断):
按照题目要求,从1遍历到n,判断每个数是否能被m整除,若能被m整除将该数加至num2,若不能被m整除将该数加至num1,最后返回num1-num2即可
时间复杂度:O(n) 1<=n,m<=1000 数据很小不会超时
思路二详解(数学规律/公式):
这里直接引用灵神-“灵茶山艾府”的数学推导图
时间复杂度:O(1)
代码:
Java思路一(遍历 + 判断)代码:
class Solution {public int differenceOfSums(int n, int m) {int num1=0;int num2=0;for(int i=1;i<=n;i++){if(i%m==0){num2+=i;}else{num1+=i;}}return num1-num2;}
}
Java思路二(数学规律/公式)代码:
class Solution {public int differenceOfSums(int n, int m) {return n*(n+1)/2 - n/m*(n/m+1)*m;}
}