• LeetCode 153 Find Minimum in Rotated Sorted Array


    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.

    You may assume no duplicate exists in the array.

    思路1:採用排序(jdk中的快排),时间复杂度为O(nlogn),代码例如以下
    public class Solution {
    	public int findMin(int[] num) {
    		Arrays.sort(num);
    		return num[0];
    	}
    }

    思路2:採用一次性遍历,时间复杂度为O(n),代码例如以下
    public class Solution {
        public int findMin(int[] num) {
            int  min=Integer.MAX_VALUE;
            for(int i=0;i<num.length;i++){
            	if(min>num[i])
            		min=num[i];
            }
            return min;
        }
    }
    思路3:採用折半查找,时间复杂度为O(logn)。代码例如以下

    public class Solution {
        public int findMin(int[] num) {
        	return minFind(num,0,num.length-1) ;
        }
        private int minFind(int[] num,int begin,int end) {
        	int middle=(begin+end)/2;
        	if(begin==end) return num[begin];
        	else if(end==begin+1) return Math.min(num[begin], num[end]);
        	else if(end==begin+2) return Math.min(Math.min(num[begin], num[begin+1]), num[end]);
        	if(num[middle]<num[begin]&&num[middle]<num[end]){
        		return minFind(num,begin,middle);
        	}
        	else if(num[begin]<num[middle]&&num[end]<num[middle]){
        		return minFind(num,middle,end);
        	}
        	else if(num[begin]<num[middle]&&num[middle]<num[end]){
        		return num[begin];
        	}
        	return 0;
        }
    }


  • 相关阅读:
    几个简单的递归题目
    HDOJ_2222 AC自动机
    展开字符串 字符模拟
    NKOJ_1437 校长杯 赛事安排
    POJ_1979 Red and Black 迷宫类
    看了LINQ Project 的Overview, 我要疯了!
    在PSP上看视频真的爽吗?
    SQL Server用户使用ORACLE应注意的几点:
    一个巨牛的招聘题[转]
    再一次看到DevExpress的控件,我傻了!!
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6979819.html
Copyright © 2020-2023  润新知