本文共 1077 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要找到一个排好序的整型数组中比给定数字稍微大一点的那个位置。如果没有找到这样的位置,则返回-1。我们将使用二分查找来高效地解决这个问题。
public class Main { public static void main(String[] args) { int arr[] = {1, 5, 11, 24, 25, 32, 32, 32, 33}; System.out.println(solve(arr, 32)); } public static int solve(int arr[], int x) { if (x >= arr[arr.length - 1]) return -1; return solve(arr, 0, arr.length - 1, x); } private static int solve(int[] arr, int begin, int end, int x) { if (end - begin == 1) { if (arr[begin] > x) return begin; return end; } int k = (begin + end) / 2; if (x >= arr[k]) return solve(arr, k, end, x); return solve(arr, begin, k, x); }}
solve
方法,传入数组和目标数字。这个方法利用了二分查找的高效性,确保在O(log n)时间复杂度内找到目标位置。
转载地址:http://glwg.baihongyu.com/