矩陣的極小值
阿新 • • 發佈:2022-05-15
class Solution { public: vector<int> getMinimumValue(int n) { const int INF = ~(1 << 31); //自然是有符號數的最大值 int l = 0, r = n - 1; //二分邊界 while(l <= r) //相等的時候也要尋找列的最小值 { int col = (l + r) >> 1; //中間列 int row, val = INF; for(int i = 0; i < n; i++) { int t = query(i, col); if(t < val) row = i, val = t; //找到本列中的最小值 } if(col - 1 >= 0 && query(row, col - 1) < val) { //左邊的列比本列小,設定左邊界 r = col - 1; continue; } if(col + 1 < n && query(row, col + 1) < val) { //右邊的列比本列小,設定右邊界 l = col + 1; continue; } return {row, col}; //否則便是找到 } return {-1, -1}; } };