有效数组判断两位元素相加是否等于目标值-左右碰撞指针

1、左右碰撞指针,类似于二分法查找

 1 /**
 2      * 查找是否存在目标值 时间复杂度 O(logN)
 3      * 有序的数组,查可以这样用
 4      * @param array
 5      * @param target
 6      * @return
 7      */
 8     public static boolean findTarget(int[] array, int target) {
 9         //数组为null或者为空,直接返回false
10         if (array == null || array.length == 0) {
11             return false;
12         }
13         //既然数组有序,可以采用左右碰撞指针,进行解决
14         int left = 0;
15         int right = array.length - 1;
16         while (left <= right) {
17             if (array[left] + array[right] == target) {
18                 //找到了,直接返回true
19                 return true;
20             } else if (array[left] + array[right] > target) {
21                 right--;
22             } else {
23                 left++;
24             }
25         }
26         //未找到,直接返回false
27         return false;
28     }

 

posted @ 2021-12-28 14:02  活出自己范儿  Views(46)  Comments(0)    收藏  举报