题目 |
题目传送门:传送门(点击此处)
题解 |
解题思路
- 数字
k
,比如k=5
,它的“好朋友”
分别是1和4、2和3;如果k=6,那么它的“好朋友”
分别是1和5
、2和4
,所以,单数的好朋友的对数会是k / 2
,而双数的好朋友的对数则是k / 2 - 1
。
我们可以考虑在数轴上考虑就会更加的清晰: k <= n
的时候,我们不用考虑n
的先置,直接考虑k的“好朋友”
的对数,单数为k / 2
,双数为k / 2 - 1
2n <= k
的时候,先考虑这种情况,这个时候在0-n
中,任何两个不相同的数字相加都不可能等于k
,所以此时为0
n < k <2n
的时候,对于数字k
,仅有一部分“好朋友”
,比如说n = 6
,k = 8
,8
的“好朋友”
有2和6
、3和5
这两对,,所以拥有对数就是n – k / 2
个
code
package solution52;
class Solution {
public long solution(long n, long k) {
long res = 0;
if (k <= n) {
if (k % 2 == 0) {
res = k / 2 - 1;
} else {
res = k / 2;
}
} else if (k < 2 * n) {
res = n - k / 2;
}else{
res = 0;
}
return res;
}
}