• Search in Rotated Sorted Array II LeetCode Java


    描述
    Follow up for ”Search in Rotated Sorted Array”: What if duplicates are allowed?
    Would this affect the run-time complexity? How and why?
    Write a function to determine if a given target is in the array.
    分析
    允许重复元素,则上一题中如果 A[m]>=A[l], 那么 [l,m] 为递增序列的假设就不能成立了,比
    如 [1,3,1,1,1]。
    如果 A[m]>=A[l] 不能确定递增,那就把它拆分成两个条件:
    • 若 A[m]>A[l],则区间 [l,m] 一定递增
    • 若 A[m]==A[l] 确定不了,那就 l++,往下看一步即可。

    二分查找

    代码

     1 // LeetCode, Search in Rotated Sorted Array II
     2 // 时间复杂度 O(log n),空间复杂度 O(1)
     3 class Solution {
     4              public static boolean search(int A[], int n, int target) {
     5                      int first = 0, last = n;
     6                      while (first != last) {
     7                              int mid = (first + last) / 2;
     8                              if (A[mid] == target)
     9                              return true;
    10                              if (A[first] < A[mid]) {
    11                                    if (A[first] <= target && target < A[mid])
    12                                              last = mid;
    13                                     else
    14                                              first = mid + 1;
    15                             } else if (A[first] > A[mid]) {
    16                                   if (A[mid] <= target && target <= A[last-1])
    17                                              first = mid + 1;
    18                                    else
    19                                              last = mid;
    20                                   } else
    21                              //skip duplicate one, A[start] == A[mid]
    22                                               first++;
    23                      }
    24                       return false;
    25             }
    26 }
  • 相关阅读:
    LR与SVM的异同
    精确率,召回率
    XgBoost推导与总结
    梯度下降中的步长选择-线性搜索
    页面去掉某个css属性
    composer 安装某个插件后 引入方法
    javascript,检测对象中是否存在某个属性
    js 计算字符串长度 中文为2 英文为1
    laravel 新手 =_= 持续更新
    php compact() 函数
  • 原文地址:https://www.cnblogs.com/ncznx/p/9167462.html
Copyright © 2020-2023  润新知