704.cpp 917 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * @Description:
  3. * @Version: 1.0
  4. * @Autor: zhuyijun
  5. * @Date: 2021-12-21 13:33:03
  6. * @LastEditTime: 2021-12-21 13:51:30
  7. */
  8. //二分查找
  9. /*
  10. 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target
  11. ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
  12. 示例 1:
  13. 输入: nums = [-1,0,3,5,9,12], target = 9
  14. 输出: 4
  15. 解释: 9 出现在 nums 中并且下标为 4
  16. */
  17. #include <bits/stdc++.h>
  18. using namespace std;
  19. int search(vector<int>& nums, int target) {
  20. int low = 0, high = nums.size() - 1;
  21. while (low <= high) {
  22. int mid = (high - low) / 2 + low;
  23. int num = nums[mid];
  24. if (num == target) {
  25. return mid;
  26. } else if (num > target) {
  27. high = mid - 1;
  28. } else {
  29. low = mid + 1;
  30. }
  31. }
  32. return -1;
  33. }
  34. int main() {
  35. vector<int> li = {1, 2, 3, 4, 5, 6, 7};
  36. cout << search(li, 1);
  37. return 0;
  38. }