• Find Min In Rotated Sorted Array,寻找反转序列中最小的元素。


    问题描述:寻找反转序列中最小的元素。

    算法分析:和寻找某个数是一个道理,还是利用二分查找,总体上分两种情况。nums[left]<=nums[mid],else。但是,在截取子序列的时候,有可能得到一个顺序序列。如34512,截取后得到12,此时要对这种情况判断,因为是顺序的,所以,最左边的元素就是最小元素。这点区别于寻找target,因为寻找target是根据target和left,mid,right做比较判断的。所以就不用对这种顺序情况单独讨论了。

     1 public int findMin(int[] nums)
     2         {
     3             return findMin(nums, 0, nums.length - 1);
     4         }
     5         //递归
     6         public int findMin(int[] nums, int left, int right)
     7         {
     8             if(left == right)
     9             {
    10                 return nums[left];
    11             }
    12             if(nums[left] < nums[right])//例如34512,在截取子序列时候,很可能就得到一个顺序序列,这时候直接判断。
    13             {
    14                 return nums[left];
    15             }
    16             int mid = (left+right)/2;
    17             if(nums[left] < nums[mid])
    18             {
    19                 return findMin(nums, mid+1, right);
    20             }
    21             else
    22             {
    23                 return findMin(nums, left, mid);
    24             }
    25         }
    26         
    27         //迭代
    28         public int findMin2(int[] nums, int left, int right)
    29         {
    30             while(left <= right)
    31             {
    32                 if(nums[left] < nums[right])
    33                 {
    34                     return nums[left];
    35                 }
    36                 if(left == right)
    37                 {
    38                     return nums[left];
    39                 }
    40                 int mid = (left+right)/2;
    41                 if(nums[left] <= nums[mid])
    42                 {
    43                     left = mid + 1;
    44                 }
    45                 else
    46                 {
    47                     right = mid;
    48                 }
    49             }
    50             return -1;
    51         }
  • 相关阅读:
    设计模式-外观模式
    多线程面试笔试题-1
    final 关键字
    java 继承 初始化顺序
    java内部类
    Python-面向对象-静态方法
    接口自动化测试框架搭建
    使用yaml设计测试用例进行单接口测试
    数据驱动测试--对excel文件的操作
    TCP协议详解
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5572385.html
Copyright © 2020-2023  润新知