题目: 33. Search in Rotated Sorted Array 一个很清晰简洁的解法: Clever idea making it simple
int search(vector<int>& nums, int target) {
int lo = 0, hi = nums.size();
while (lo < hi) {
int mid = (lo + hi) / 2;
double num = (nums[mid] < nums[0]) == (target < nums[0])
? nums[mid]
: target < nums[0] ? -INFINITY : INFINITY;
if (num < target)
lo = mid + 1;
else if (num > target)
// 这儿为什么不能 -1 ?
hi = mid;
else
return mid;
}
return -1;
}
这个解法省了我几万个脑细胞, lo = mid + 1
很好理解, 但是 hi = mid - 1
为什么出错, 我想破脑袋都没想明白...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.