zoukankan      html  css  js  c++  java
  • 154. Find Minimum in Rotated Sorted Array II

    一、题目

      1、审题

      

      2、分析

        一个可能有重复元素的整形数组绕一个未知元素翻转后,求新数组的最小元素。

    二、解答

      1、思路:

        方法一、

          同上一题;

          只是需要考虑判断重复的元素是否被翻转到了尾部,此时 end-- 即可。

        public int findMin(int[] nums) {
         
            int len = nums.length;
            if(len == 1)
                return nums[0];
            
            int start = 0, end = len - 1;
            while(start < end) {
                
                if(nums[start] == nums[end]) {
                    end--;
                    continue;
                }
                // 已经有序
                if(nums[start] < nums[end]) {
                    return nums[start];
                }
    
    //            int mid = (start + end) / 2;    // may be overflow
                int mid = start + ((end - start) >> 1);
                // 前半部分有序
                if(nums[start] <= nums[mid]) 
                    start = mid + 1;
                // 前半部分无须;
                else 
                    end = mid;
                
            }
            return  nums[start];
        }

    方法二、

        直接采用线性方法进行查找;

        public int findMin2(int[] nums) {
            
            for (int i = 1; i < nums.length; i++) {
                if(nums[i] < nums[i - 1])
                    return nums[i];
            }
            
            return nums[0];
        }
  • 相关阅读:
    Senventh Week(补充完整)
    Sixth Week(补充完整)
    Fifth Week(补充完整)
    Fourth Week (补充完整)
    九大内置对象
    matlab 简单绘图
    matlab ./
    困惑
    【转】matlab中inf
    matlab x~=0
  • 原文地址:https://www.cnblogs.com/skillking/p/9783229.html
Copyright © 2011-2022 走看看