zoukankan      html  css  js  c++  java
  • leetcode 153. 寻找旋转排序数组中的最小值 java

    题目:

    假设按照升序排序的数组在预先未知的某个点上进行了旋转。

    ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

    请找出其中最小的元素。

    你可以假设数组中不存在重复元素。

    示例 1:

    输入: [3,4,5,1,2]
    输出: 1

    示例 2:

    输入: [4,5,6,7,0,1,2]
    输出: 0

    解题:

    class Solution {
        public int findMin(int[] nums) {
            int len = nums.length;
            return findMin1(nums, 0, len - 1);
            
        }
        public int findMin1(int[] nums,int start,int end) {
            if(nums[start] <= nums[end]) //如果没有乱序,则第一个即为最小值
                return nums[start];
            if(start == end - 1) //只有两个数的时候
                return Math.min(nums[start], nums[end]);
            int mid = (start + end)/2;
            if(nums[mid] > nums[start]) //因为分为两部分,一部分有序,一部分无序,最小值在无序部分
            {
                return findMin1(nums, mid,end);
            }
            else{
                return findMin1(nums, start, mid);
            }
        }
    }
  • 相关阅读:
    文件载入功能
    代码调试功能
    实用项
    连贯操作
    AR模式
    表名操作
    字段映射
    ThinkPHP中的模型二
    创建数据对象
    HDU 4888 Redraw Beautiful Drawings(最大流+判最大流网络是否唯一)
  • 原文地址:https://www.cnblogs.com/yanhowever/p/10828593.html
Copyright © 2011-2022 走看看