算法刷题(3)--旋转数组的最小数字

1人阅读 评论(0) 收藏 举报
分类:

算法刷题(3)--旋转数组的最小数字


package p1;

/**
 * 旋转数组的最小数字
 * 题目描述:
 * 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
 * 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 
 * 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
 * NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
 * @author Guozhu Zhu
 * @date 2018/4/14
 * @vesion 1.0
 */
public class Test03 {
    
	public static void main(String args[]) {
		int[] arr = {3, 4, 5, 1, 2};
		System.out.println(minNumberInRotateArray(arr));
	}
	
	public  static int minNumberInRotateArray(int arr[]) {
	    if (arr.length == 0) {
	    	return 0;
	    }
	    minInsertSort(arr);
	    return arr[0];    
	}
	
	/*
	 * 二分插入排序
	 */
	public static void minInsertSort(int arr[]) {
		for (int i = 1; i < arr.length; i++) {
			int temp = arr[i];
			int low = 0;
			int high = i-1;
			int mid;
			while (low <= high) {
				mid = (low+high)/2;
				if (arr[mid] > temp) {
					high = mid-1;
				} else {
					low = mid+1;
				}
			}
			for (int j = i-1; j >= low; j--) {
				arr[j+1] = arr[j];
			}
			arr[low] = temp; //插入元素
		}
	}
	
}

查看评论

剑指offer第六题【旋转数组的最小数字】c++实现

旋转数组的最小数字 参与人数:3258时间限制:1秒空间限制:32768K通过比例:14.10%最佳记录:0 ms|0K(来自  Wocao) 题目描述 把一个数组最开始的若...
  • u011692312
  • u011692312
  • 2015-10-14 11:30:19
  • 495

剑指Offer面试题8(java版):旋转数组的最小数字

题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为旋转。 输入一个递增的排序的数组的一个旋转,输出旋转数组的最小元素。  例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转...
  • jsqfengbao
  • jsqfengbao
  • 2015-07-28 17:26:03
  • 2323

面试题8:旋转数组中的最小数字

旋转数组的特点: (1)递增排序的数组旋转之后的数组可划分为两个排序的子数组; (2)前面的子数组的元素都大于或等于后面子数组的元素; (3)最小的元素刚好是两个子数组的分界线; (4)旋转数组在一...
  • htyurencaotang
  • htyurencaotang
  • 2013-07-19 22:56:14
  • 4447

剑指offer----旋转数组的最小数字----java实现

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该...
  • snow_7
  • snow_7
  • 2016-07-14 15:34:09
  • 2038

查找旋转数组的最小数字 JAVA实现

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一...
  • u013276277
  • u013276277
  • 2017-05-22 09:20:34
  • 341

旋转数组的最小数字(剑指offer面试题)

此题的结题思路在剑指offer书上分析的也较为透彻,此处的分析过程来自牛客网对本题的讨论中比较好以一个网友的分析过程 旋转之后的数组实际上可以划分成两个有序的子数组:前面子数组的大小都大于后面子...
  • u014221279
  • u014221279
  • 2016-02-23 10:39:58
  • 367

剑指offer-8- Python实现旋转数组的最小数

一、题目描述二、解法def minNumberInRotateArray(rotateArray): # write code here p1 = 0 p2 = len(rot...
  • jackmcgradylee
  • jackmcgradylee
  • 2017-09-06 21:35:31
  • 207

JAVA实现旋转数组的最小数字问题(《剑指offer》)

题目:旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3...
  • qq_15062527
  • qq_15062527
  • 2015-10-01 19:13:42
  • 1161

剑指offer--面试题8:旋转数组的最小数字--Java实现

题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋...
  • u012289407
  • u012289407
  • 2015-05-06 21:14:42
  • 606

旋转数组的最小数字 python

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个...
  • XiaoXIANGZI222
  • XiaoXIANGZI222
  • 2017-02-18 20:42:37
  • 1221
    个人资料
    持之以恒
    等级:
    访问量: 4990
    积分: 882
    排名: 5万+
    文章存档
    最新评论