/** * 题目: * 假设一个单调递增的数组里的每个元素都是整数并且是唯一的。 * 请编程实现一个函数找出数组中任意一个数值等于其下标的元素。 * 例如,在数组{-3, -1, 1, 3, 5}中,数字3和它的下标相等。 * * 解题思路: * 利用二分查找 * 如果数字的值大于数组下标,下一轮查找只需要从它左边的数字中查找即可。 * 如果数字的值小于数组下标,下一轮查找只需要从它的右边查找即可。 * 如果数字的值等于数组下标,便找到一个数组中数值和下标相等的元素。 */ public class P267_GetNumberSameAsIndex { public int GetNumberSameAsIndex(int[] array){ if (array == null || array.length == 0) { return -1; } int start = 0; int end = array.length-1; while (start <= end) { int mid = (start + end) / 2; if (array[mid] == mid) { return mid; } if (array[mid] > mid) { end = mid - 1; } if (array[mid] < mid) { start = mid + 1; } } return -1; } public static void main(String[] args) { int[] array = {-3, -1, 1, 3, 4}; P267_GetNumberSameAsIndex test = new P267_GetNumberSameAsIndex(); int result = test.GetNumberSameAsIndex(array); System.out.println(result); } }
剑指offer:数组中数值和下标相等的元素(java)
猜你喜欢
转载自blog.csdn.net/Sunshine_liang1/article/details/82868507
今日推荐
周排行