分类讨论:
数学推理请看链接,灵茶山艾府-分类讨论+详细证明+简洁写法+优化(Python/Java/C++/Go)
class Solution {
public:
int reachNumber(int target) {
//第i次移动走i个数字
//target !=0
//越过target,当sum{k},{1} - target为偶数,反转某一步,即可得到答案。
target = abs(target);
int ans = 1,step =0;//答案ans,总步长step
while(step<target||(step-target)%2) step+=ans++;
return ans-1;//step += ans,然后ans++,所以step满足退出条件时,ans多++了一次。return ans-1;
}
};
理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。