剑指Offer-第5天 查找算法(中等)
第一题
题目链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/
个人题解:因为矩阵元素的特殊性,因此可以一行一行或者一列一列查找
代码:
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
if(matrix.size()==0 || matrix[0].size()==0) return false;
int row=0,col=matrix[0].size()-1;
while(row<matrix.size() && col>=0){
int num=matrix[row][col];
if(num==target) return true;
else if(num>target) col--;
else row++;
}
return false;
}
};
运行结果:

第二题
题目链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/
个人题解:二分查找
代码:
class Solution {
public:
int minArray(vector<int>& numbers) {
int le=0,ri=numbers.size()-1;
while(le<ri)
{
int mid=le+(ri-le)/2;
if (numbers[mid]<numbers[ri]) ri=mid;
else if(numbers[mid]>numbers[ri]) le=mid+1;
else ri--;
}
return numbers[le];
}
};
运行截图:

第三题
题目链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/
个人题解:哈希表
代码
class Solution {
public:
char firstUniqChar(string s) {
unordered_map<int,int> hash;
for(auto ch:s) hash[ch]++;
for(int i=0;i<s.length();i++){
if(hash[s[i]]==1) return s[i];
}
return ' ';
}
};
运行截图:


浙公网安备 33010602011771号