https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/ 数组、二分查找

二分查找

  1. function search(nums: number[], target: number): boolean {
  2. let l = 0;
  3. let r = nums.length - 1;
  4. while (l <= r) {
  5. let m = (l + r) >> 1;
  6. if (nums[m] === target) return true;
  7. // 这里是去重
  8. if (nums[m] === nums[l] && nums[m] === nums[r]) {
  9. l++;
  10. r--;
  11. } else if (nums[l] > nums[m]) {
  12. if (target > nums[m] && target <= nums[r]) {
  13. l = m + 1;
  14. } else {
  15. r = m - 1;
  16. }
  17. } else {
  18. if (target >= nums[l] && target < nums[m]) {
  19. r = m - 1;
  20. } else {
  21. l = m + 1;
  22. }
  23. }
  24. }
  25. return false;
  26. };