day5
1.剑指 Offer 04. 二维数组中的查找
从右上角开始查找,同一行它的左边元素都比它小,同一列它的下边元素都比它大,它就相当于二分法里的那个中间点,如果它大于target(说明这一列的元素都会比它大),就把列数减一,小于就行数加一
1 class Solution { 2 public: 3 bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { 4 if(matrix.size() <= 0 || matrix[0].size() <= 0) return false; 5 int i = 0,j = matrix[0].size() - 1; 6 while(i <= matrix.size() - 1 && j >= 0){ 7 if(matrix[i][j] == target) 8 return true; 9 else if(matrix[i][j] > target) 10 j --; 11 else 12 i ++; 13 } 14 return false; 15 } 16 };
2.剑指 Offer 11. 旋转数组的最小数字
1 class Solution { 2 public: 3 int minArray(vector<int>& numbers) { 4 sort(numbers.begin(),numbers.end()); 5 return numbers[0]; 6 } 7 };
3.剑指 Offer 50. 第一个只出现一次的字符
1 class Solution { 2 public: 3 char firstUniqChar(string s) { 4 unordered_map<char,int> map; 5 for(auto ch : s) 6 map[ch] ++; 7 for(auto ch : s) 8 if(map[ch] == 1) 9 return ch; 10 return ' '; 11 } 12 };

浙公网安备 33010602011771号