zoukankan      html  css  js  c++  java
  • 【leetcode】Find Minimum in Rotated Sorted Array II JAVA实现

    一、题目描述

    Follow up for "Find Minimum in Rotated Sorted Array":
    What if duplicates are allowed?

    Would this affect the run-time complexity? How and why?

    Suppose a sorted array is rotated at some pivot unknown to you beforehand.

    (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

    Find the minimum element.

    The array may contain duplicates.

    这道题目就是Find Minimum in Rotated Sorted Array的增强版,在数组中增加了重复的元素。

    具体的解法在http://www.cnblogs.com/rolly-yan/p/4032167.html中进行了详细的分析,如有需要请参考。

    二、代码实现

    package com.edu.leetcode;
    
    public class FindMinimuminRotatedSortedArray {
    	
    	public int findMin(int[] num) {
    		int start=0; 
    		int end=num.length-1;
    			
    		while(num[start]>=num[end]){                      //num[start]>=num[end]说明数组不是正向有序的,最小值不在第一个位置
    			
    			if(end-start==1){			//循环结束的条件,当只有两个元素的
    				return num[end];
    			}
    			int mid=(start+end)/2;
    			
    			if(num[start]==num[mid]&&num[mid]==num[end]){    
    				//有这个条件有两种情况:1、当只有一个元素时;
    				//2、当数组中有大量重复的元素时,不可以再使用对半查找
    				int minValue=num[start];
    				for(int i=start+1;i<=end;i++){
    					if(num[i]<minValue)
    						minValue=num[i];
    				}
    				return minValue;
    			}
    			
    			if(num[mid]>=num[start]){         //当出现这种情况说明最小值出现在mid与end之间
    				start=mid;
    			}
    			else{					//说明最小出现在start与mid之间
    				end=mid;
    			}
    		}
    		return num[start];		//这个是说明数组从start到end正向有序,所以最小值就是start位置的元素
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		FindMinimuminRotatedSortedArray f = new FindMinimuminRotatedSortedArray();
    		int[] num = { 1};
    		System.out.println(f.findMin(num));
    	}
    }
    

      

  • 相关阅读:
    SQL SERVER的检查点checkpoint
    MySQL备份说明
    声明对象和创建对象的区别
    getParameter的用法总结
    Jsp的九大对象,七大动作,三大指令
    为什么内部类访问的外部变量需要使用final修饰
    java synchronized详解
    网上选课系统需求说明书
    第三次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/rolly-yan/p/4044064.html
Copyright © 2011-2022 走看看