• [剑指offer]旋转数组的最小值


    题目描述
    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
    输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
    NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
    示例1
    输入
    [3,4,5,1,2]
    返回值
    1

    学习一下大佬的思路(学到一个知识点:java位移操作符>> 右移一位相当于乘二操作):

    public class Solution {
        public int minNumberInRotateArray(int[] array) {
            int i = 0, j = array.length - 1;
            while (i < j) {
                if (array[i] < array[j]) {//所有数都是相同的情况
                    return array[i];
                }
                int mid = (i + j) >> 1;      // >> java位移操作符,左移运算是将二进制位串向左移动n位,相当于除2操作,低位补0;右移运算是将二进制位串向右移动n位 相当于乘2
                if (array[mid] > array[i]) {//旋转后的数组最小值在右侧区域
                    i = mid + 1;            //在右边找
                } else if (array[mid] < array[j]) {//左侧区域
                    j = mid; 
                } else i++;  
            }
            return array[i];
        }
    }
    

    贴一下我的垃圾思路,找一找自己的问题:

    import java.util.ArrayList;
    public class Solution {
        public int minNumberInRotateArray(int [] array) {
            if(array.length==0){
                return 0;
            }
            int i=0;
            int j=array.length-1;
            int mid=j/2;
            int max;
            while(array[mid]<array[mid+1]){
            if(array[i]>array[mid]){
                mid=mid/2;
            }else{
                i=mid;
                mid=(i+j)/2;
            }
           }
            return array[mid];
        }
    }
    

    最后是程序运行超时。算法效率太低而且循环条件有问题,,,还要继续刷题啊。

    温故而知新
  • 相关阅读:
    bin/sh^M: bad interpreter: No such file or directory解决
    集群常见错误解决方案(转载)
    华为交换机型号前缀
    Intel超低功耗CPU的一些信息
    关于Datastage资料库的一点小发现
    Failed to connect to JobMonApp on port 13491
    鸡汤
    SVN and GitHub
    大数据
    Python
  • 原文地址:https://www.cnblogs.com/littleTiger-bukeai/p/14159067.html
Copyright © 2020-2023  润新知