题目:754. 到达终点数字
思路:先移动到不超过target的最近位置,如果与target的距离相距为偶数,则可以通过反转之间的某步来达到target,推导如下。如果距离之和不为偶数,则继续向右走,直到相距为偶数。
class Solution {
public:
int reachNumber(int target) {
if(target<0) target=-target;
int k=(int)sqrt(2*target);
int dist = k*(k+1)/2;
while(dist<target || (dist-target)%2==1){
k++;
dist=k*(k+1)/2;
}
return k;
}
};
参考: