跟进“搜索旋转排序数组”,假如有重复元素又将如何?
是否会影响运行时间复杂度?
如何影响?
为何会影响?
写出一个函数判断给定的目标值是否出现在数组中。
public class Solution { /** * @param A: an integer ratated sorted array and duplicates are allowed * @param target: An integer * @return: a boolean */ public boolean search(int[] A, int target) { // write your code here if (A == null || A.length == 0) { return false; } return search(A, 0, A.length - 1, target); } private boolean search(int[] array, int start, int end, int target) { if (start == end) { if (array[start] == target) { return true; } else { return false; } } int middle = (start + end) / 2; boolean left = search(array, start, middle, target); boolean right = search(array, middle + 1, end, target); if (left == true) { return left; } else if (right == true) { return right; } else { return false; } } }