哨兵:國家邊界的站崗士兵;這裏引申爲處理邊界值的問題。
實例:
需求:數組中找值key所在的位置
public class GuardTest {
public static void main(String[] args) {
int[] array = {1,3,5};
System.out.println(searchValue(array, 3));
System.out.println(searchValueWithGuard(array, 3));
}
public static int searchValue(int[] array, int value){
int length = array.length;
int i = 0;
while(i < length){
if(array[i] == value){
return i;
}
i++;
}
return value;
}
/**
* desc:用到了哨兵,複雜化了邏輯,減少了while循環
*/
public static int searchValueWithGuard(int[] array, int value){
int length = array.length;
if(array[length-1] == value){
return length-1;
}
int tmp = array[length-1];
array[length-1] = value;
int index = 0;
while(array[index] != value){
index++;
}
if(index == length-1){
index = -1;
}
array[length-1] = tmp;
return index;
}
}