方法一 模拟
维护一个数组arr,初始值为n,每次循环将arr[i] % j(1<=j<=n) 如果结果为1则将j加入,
最后将arr转为Set集合去重,Set的长度就是答案
var distinctIntegers = function(n) {
let arr=[]
arr.push(n)
for(let i=0;i<=arr.length;i++){
for(let j=1;j<=n;j++){
if(arr[i]%j===1){
arr.push(j)
}
}
}
return new Set(arr).size
};
消耗时间和内存情况:
方法二 数学:
当 n>1时,那么经过多次操作后,一定可以将 n−1,n−2,…,2 依次放到桌面上。
当 n=1 时,桌面只有一个数字 1。
var distinctIntegers = function(n) {
return n == 1 ? 1 : n - 1;
};
消耗时间和内存情况: