BGE-Reranker-v2-m3学术研究应用:论文检索精度提升方案
2026/1/15 4:22:49
给你一个满足下述两条属性的m x n整数矩阵:
给你一个整数target,如果target在矩阵中,返回true;否则,返回false。
示例 1:
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true
示例 2:
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出:false
提示:
m == matrix.lengthn == matrix[i].length1 <= m, n <= 100-104 <= matrix[i][j], target <= 104代码利用矩阵 “每行升序、行尾元素递增” 的特性,分两步完成查找:
target与当前行的最后一个元素,找到第一个行尾元素 ≥target的行(目标值若存在,必在这一行);lower_bound函数,在定位到的行中使用开区间二分法(left=-1、right=列数,循环条件left+1<right)查找target,找到则返回true,否则返回false;false。lower_bound函数采用开区间二分法,简化了单行查找的边界处理;class Solution { public: bool lower_bound(vector<int>& nums,int left,int right, int x){ int len=nums.size(); int mid=0; while(left+1<right){ mid=(left+right)/2; if(nums[mid]<x) left=mid; else right=mid; } return nums[right]==x? true:false; } bool searchMatrix(vector<vector<int>>& matrix, int target) { int len=matrix.size(); int row_len=matrix[0].size(); for(int i=0;i<len;i++){ if(target<=matrix[i][row_len-1]){ return lower_bound(matrix[i],-1,matrix[i].size(),target); } } return false; } };