java实现把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如{3,4,5,1,2}为{1,2,3,4,5}
2017-05-11 12:02
926 查看
public class Solution_xuanzhuanshuzu { public int minNumberInRotateArray(int[] array) { // 如果数组长度为0则返回-1 if (array.length == 0) { return -1; } int left = 0; int right = array.length - 1; int mid = left; // 当最左边值大于等于最右边时候 while (array[left] >= array[right]) { // 如果此时数组只剩下两个数值 if (right - left == 1) { // 最小的就是右边 mid = right; break; } // 如果数组长度是2个以上 mid = (left + right) / 2; // 假如最左边和中间以及最右边值都相等,只能进行顺序查找,如{1,1,1,0,1} if (array[left] == array[mid] && array[left] == array[right]) return orderFind(array, left, right); // 如果最左边小于等于中间,说明最小值在后半部分,把mid位置标记为最左侧如{3,4,5,1,2} if (array[mid] >= array[left]) left = mid; // 如果最左侧大于等于中间值,说明最小值在前半部分,把mid位置标记为最右侧{4,5,1,2,3} else if (array[mid] <= array[left]) right = mid; } return array[mid]; } public int orderFind(int[] array, int left, int right) { int min = array[left]; for (int i = left + 1; i <= right; i++) { if (array[i] < array[left]) min = array[i]; } return min; } public static void main(String[] args) { int[] array = { 3, 4, 5, 1, 2 }; Solution_xuanzhuanshuzu minNum = new Solution_xuanzhuanshuzu(); System.out.println(minNum.minNumberInRotateArray(array)); } }
相关文章推荐
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组
- 求旋转数组的最小元素(把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转。输出旋转数组的最小值。
- 【C语言】求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素
- 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素
- 面试题8:输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
- 【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素
- 【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素
- Java开发练习1,输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- Comparator 实现集合中元素的比较.输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这321323
- [经典面试题]输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
- 编写一个多线程函数实现对数组排序,要求: 1.至少用两个线程 2.数组的元素值可以事先定义好,或者可以从键盘输入(增加一个线程)。 3.用一个线程对数组排序,用另一个线程输出排序结果。 4.保证先排好序,再输出。
- 输出一个为递增排序数组的旋转数组中的最小元素――8
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。
- 6、 java 输入一个数字组成的数组,输出该数组的最大值和最小值