以前看leetcode都按顺序的,偶然看博客发现结合数据结构刷题,应该有趣合理的多。 分享一个百度大牛的博客:https://programmercarl.com/,可以看他是如何刷题的。
他们刷题有个思维导图
我根据大牛的思路去刷题,确实有进步,先看暴力解法,然后再看是否能优化,于是看思维导图我去刷了704 二分查找,平时下班早我就去leetcode去刷1-2道
一 暴力解法:
class Solution {
public:
int search(vector<int>& nums, int target) {
int i;
for (i = 0; i < nums.size(); i++) {
if (target == nums[i])
return i;
}
return -1;
}
};
发现一下就通过了,真开心,回头看了下题目,不对啊,根本没用到二分查找,尴了个尬。
二 二分查找:
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
while(left <= right) {
int mid = (left + right) / 2;
if (nums[mid] > target) {
right = mid -1;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
return mid;
}
}
return -1;
}
};
|