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 };

 

posted @ 2022-06-29 23:07  balabalahhh  阅读(33)  评论(0)    收藏  举报