剑指 Offer 04. 二维数组中的查找
从右上角的元素开始,当当前元素大于给定值,横坐标左移,当小于给定值时,纵坐标下移,直到找到对应元素
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
if(matrix.size()==0) return false;
if(matrix[0].size()==0) return false;
int x=0;
int y=matrix[0].size()-1;
while(y>=0&&x<matrix.size()){
if(matrix[x][y]==target) return true;
else if(matrix[x][y]>target) y--;
else x++;
}
return false;
}
};
剑指 Offer 11. 旋转数组的最小数字
循环走一遍加判断即可
class Solution {
public:
int minArray(vector<int>& numbers) {
int r=numbers.size()-1;
while(1){
if(r==0) break;
if(numbers[r-1]<=numbers[r]) r--;
else break;
}
return numbers[r];
}
};
面试题50. 第一个只出现一次的字符
map记录即可
class Solution {
public:
char firstUniqChar(string s) {
unordered_map<int, int> mp;
for(int i=0;i<s.size();i++){
mp[s[i]]++;
}
for(int i=0;i<s.size();i++){
if(mp[s[i]]==1) return s[i];
}
return ' ';
}
};