寫一函式,將一個3*3的整型矩陣轉置
阿新 • • 發佈:2020-09-02
二分查詢也是屬於雙指標應用的一種體現;
二分查詢在使用的時候,資料往往是有序的,並且一般是陣列;因此一般兩個指標一個是從左邊開始,另一個是從右邊開始;
二分查詢在使用的時候一般是有大體的框架的,比如在一個數組中查詢一個數的寫法如下:
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; }