LeetCode_Study_Plan/Algorithm
278. First Bad Version java
개발하는루루
2022. 12. 20. 16:53
https://leetcode.com/problems/first-bad-version/?envType=study-plan&id=algorithm-i
First Bad Version - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
/* The isBadVersion API is defined in the parent class VersionControl.
boolean isBadVersion(int version); */
public class Solution extends VersionControl {
public int firstBadVersion(int n) {
int start = 1;
int end = n;
int ans = -1;
while (start <= end) {
int mid = (start + end) / 2;
if (isBadVersion(mid)) {
end = mid - 1;
ans = mid;
} else {
start = mid + 1;
}
}
return ans;
}
}
[ Time Limit Exceeded ]
이유를 찾아보니, overflow 이슈 때문이었다.
start + end가 Python이 아니면 overflow가 될 수 있기때문에
mid = (start + end) / 2가 아닌, start + (end - start)/2로 해주어야 성공할 수 있었다.
그래서 최종 성공코드는 아래와 같다.
/* The isBadVersion API is defined in the parent class VersionControl.
boolean isBadVersion(int version); */
public class Solution extends VersionControl {
public int firstBadVersion(int n) {
int start = 1;
int end = n;
int ans = -1;
while (start <= end) {
int mid = start + (end - start) / 2;
if (isBadVersion(mid)) {
end = mid - 1;
ans = mid;
} else {
start = mid + 1;
}
}
return ans;
}
}