本文共 1484 字,大约阅读时间需要 4 分钟。
在旋转有序数组中找出给定的一个整数,并返回该整数在数组中的下标?
//常规有序数组int[] arr1 = { 1,2,3,4,5}//旋转有序数组int[] arr2 = { 50,60,70,80,20,30,40}
解题思路:
代码如下:
public class Solution_2 { private static int findTargetIndex(int[] nums, int target) { int left = 0; int right = nums.length - 1; int mid; while (left <= right) { mid = (right - left) / 2 + left; if (nums[mid] == target) { return mid; } if (nums[mid] >= nums[left]) { //说明在左侧有序 if (target >= nums[left] && target < nums[mid]) { right = mid - 1; } else { left = mid + 1; } } else { //说明在右侧有序 if (target > nums[mid] && target <= nums[right]) { left = mid + 1; } else { right = mid - 1; } } } return -1; } public static void main(String[] args) { int[] arr = { 10, 20, 30, 40, 1, 2, 3, 4, 5, 6,7}; int target = 2; int targetIndex = findTargetIndex(arr, target); System.out.println("targetIndex = " + targetIndex); }}
转载地址:http://rmmbi.baihongyu.com/