2024-09-01发表2024-09-03更新OI KIWI / 算法2 分钟读完 (大约355个字)OI KIWI 02-二分 二分查找 左闭右闭 123456789101112131415int binarySearch(vector<int>& vec, int target) { int len = vec.size(); int l = 0, r = len - 1; // while(l <= r) { int mid = (r - l) / 2 + l; if(vec[mid] == target) { return mid; } else if(vec[mid] > target) { r = mid - 1; } else { l = mid + 1; } } return -1;} 左闭右开 123456789101112131415161718class Solution {public: int search(vector<int>& nums, int target) { int len = nums.size(); int l = 0, r = len; while(l < r) { int mid = (r - l) / 2 + l; if(nums[mid] == target) { return mid; } else if(nums[mid] > target) { r = mid; } else { l = mid + 1; } } return -1; }}; 总结阅读更多
2024-08-23发表2024-09-03更新OI KIWI / 算法12 分钟读完 (大约1789个字)OI KIWI 01-倍增OI KIWI 倍增 思想 图片来源 查找小于limit的最大数字 1234567891011121314int maxValueInVecSmallerThenLimit(vector<int>& vec, int limit) { int n = vec.size(); int l = 0; int p = 1; while(p) { if(l + p < n && vec[l + p] < limit) { l += p; p <<= 1; } else { p >>= 1; } } return vec[l];}阅读更多