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));
    	}
    }
    

      

  • 相关阅读:
    Java Switch
    老徐杂谈:年后的第一个双休,你在做什么?
    测试必备技能系列4:如何用SSH向linux服务器上传下载文件
    Git从零教你入门(4):Git服务之 gogs部署安装
    你知道哪些linux命令,能把文件上传到远程linux服务器
    一个7年以上测试工程师的2016思考
    老徐谈谈软件测试职业的现状,以及市场情况
    mac 远程连接服务器
    Git从零开始怎么学?
    分享 | Git常用的一些命令
  • 原文地址:https://www.cnblogs.com/rolly-yan/p/4044064.html
Copyright © 2011-2022 走看看