• 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         }
  • 相关阅读:
    关于白盒测试的心得
    基于Java的闰年测试
    等价类划分练习的代码实现
    软件测试中的等价类划分练习
    关于软件测试的初学小结
    现代软件工程作业第十二题(原十四题)
    好像木有白盒测试实验的报告,补一个~
    给大家推荐一本书啊啊~
    关于【做一名软件测试工程师,需要具备什么】的我的看法
    关于考试的笔记整理
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5572385.html
Copyright © 2020-2023  润新知