class Solution {
public:
int reachNumber(int target) {
if (target == 0) return 0;
if (target < 0)
target *= -1;
int remain = target;
int step = 0;
bool odd = (target & 1);
while(remain > 0) {
step++;
remain -= step;
}
int pattern = step % 4;
int pattern2 = pattern % 2;
printf("%d %d %d\n", step, pattern, pattern2);
if (odd) {
if ((pattern == 1) || (pattern == 2))
return step;
else {
if (pattern == 0)
return (step + 1);
if (pattern == 3)
return (step + 2);
}
} else {
if ((pattern == 0) || (pattern == 3))
return step;
else {
if (pattern == 1)
return (step + 2);
if (pattern == 2)
return (step + 1);
}
}
return step;
}
};
留言
張貼留言