leetcode轮回计划20181024

  1. 71 Simplify Path
    题意:简化路径
    思路:先分割,再使用栈来解
  2. 73 Set Matrix Zeros
    题意:将矩阵中零元素所在行和所在列归零,要求in-place
    思路:使用vector存下来就行了吧
    这是更好一点的版本(还没看):
class Solution {
public:
    void setZeroes(vector>& matrix) {
        int col0 = 1, n = matrix.size(), m = matrix[0].size();
        for(int i = 0; i < n ;i ++){
            if(matrix[i][0] == 0) col0 = 0;
            for(int j = 1; j < m ; j++){
                if(matrix[i][j] == 0){
                    matrix[i][0] = 0;
                    matrix[0][j] = 0;
                }
            }
        }
        for(int i = n - 1; i >= 0; i--){
            for(int j = m - 1; j > 0; j--){
                if(!matrix[i][0] || !matrix[0][j]){
                    matrix[i][j] = 0;
                }
            }
            if(!col0 ) matrix[i][0] = 0;
        }
    }
};
  1. 74 Search a 2D Matrix
    题意:这个2D矩阵的特点:每行递增,t行最后一个元素小于t+1行第一个元素
    思路:经典题
  2. 75 Sort Colors
    题意:将杂乱的红、白、蓝三种颜色按照红、白、蓝进行排序,要求one-pass
    思路:分三种情况进行浏览
class Solution {
public:
    void sortColors(vector& nums) {
        int begin = 0;
        int end = nums.size() - 1;
        int index = begin;
        while(index <= end){
            if(nums[index] == 0){
                swap(nums[index++], nums[begin++]);
            }
            else if(nums[index] == 2){
                swap(nums[index], nums[end--]);
            }
            else index++;
        }
    }
};
  1. 77 Combinations
    题意:输入两个整数n和k,输出[1,n]中其中k个数字的的不同的排列情况。
    思路:简单的回溯即可
  2. 78 Subsets
    题意:返回一个数组所有的子集,不可重复。
    思路:简单的回溯即可。
  3. 79 Word Search
    题意:字母组成的二维表格中是否能组成一个给定的单词,不允许重复利用
    思路:回溯的同时将走过的路径的字母要赋$
  4. 80 Remove Duplicates from Sorted Array II
    题意:将重复超过两次的数字移除至只有两次
    思路:flag的合理运用

你可能感兴趣的:(leetcode轮回计划20181024)