1. 程式人生 > 實用技巧 >寫一函式,將一個3*3的整型矩陣轉置

寫一函式,將一個3*3的整型矩陣轉置

二分查詢也是屬於雙指標應用的一種體現;
二分查詢在使用的時候,資料往往是有序的,並且一般是陣列;因此一般兩個指標一個是從左邊開始,另一個是從右邊開始;
二分查詢在使用的時候一般是有大體的框架的,比如在一個數組中查詢一個數的寫法如下:

public int fun(int []num, int target){
      //定義左右兩邊的指標並進行相應的賦值
      int  left=0,right=num.length-1;
      
      while(left<=right)
      {
            int mid=left+(right-left)/2;
            if(num[mid]==target)
            {
                  //進行相應的操作
                  return mid;
            }
            else if(num[mid]<target)
            //更新左指標
            left=mid+1;
            else if(num[mid]>target)
            //更新右指標
            right=mid-1
      }
      return -1;
}

查詢左側邊界

public int fun(int[] nums, int target) {
    int left = 0, right = nums.length - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] < target) {
            left = mid + 1;
        } else if (nums[mid] > target) {
            right = mid - 1;
        } else if (nums[mid] == target) {
            // 別返回,鎖定左側邊界
            right = mid - 1;
        }
    }
    // 最後要檢查 left 越界的情況
    if (left >= nums.length || nums[left] != target)
        return -1;
    return left;
}

查詢右側邊界

public int fun(int[] nums, int target) {
    int left = 0, right = nums.length - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] < target) {
            left = mid + 1;
        } else if (nums[mid] > target) {
            right = mid - 1;
        } else if (nums[mid] == target) {
            // 別返回,鎖定右側邊界
            left = mid + 1;
        }
    }
    // 最後要檢查 right 越界的情況
    if (right < 0 || nums[right] != target)
        return -1;
    return right;
}