这是算法篇的第三篇,力扣链接
给你一个正整数
n
,开始时,它放在桌面上。在109
天内,每天都要执行下述步骤:
- 对于出现在桌面上的每个数字
x
,找出符合1 <= i <= n
且满足x % i == 1
的所有数字i
。- 然后,将这些数字放在桌面上。
返回在
109
天之后,出现在桌面上的 不同 整数的数目。注意:
- 一旦数字放在桌面上,则会一直保留直到结束。
%
表示取余运算。例如,14 % 3
等于2
。
这个是个找规律题。
- 每天加数字上去的时候,一定会加上一个n - 1,因为n % (n-1) = 1。
- 特殊情况是 2 % 1 =0,因此1不会加上去。
- 所以天数够大时,最终一定会留下(1,n]区间所有的整数即 n-1。
- 前面特殊情况中1并不会在后来被加上去,但是假如一开始就是1就比较特殊,要区别返回。
代码如下:
func distinctIntegers(n int) int {
if n == 1 {
return n
}
return n - 1
}