LeetCode数据结构基础---2021/8/15

只出现一次的数字

只出现一次的数

多数元素

多数元素

三数之和

三数之和

颜色分类

颜色分类

合并区间

合并区间

杨辉三角 II

在这里插入图片描述
分析:
  先生成杨辉三角,再返回。
代码:

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<vector<int>> res(rowIndex + 1, vector<int>(rowIndex + 1));
        for(int i = 0; i <= rowIndex; i++) {
            res[i][0] = 1;
            res[i][i] = 1;
        }
        for(int i = 1; i <= rowIndex; i++) {
            for(int j = 1; j <= rowIndex; j++) {
                res[i][j] = res[i - 1][j] + res[i - 1][j - 1];
            }
            res[i].resize(i + 1);
        }
        return res[rowIndex];
    }
};

旋转图像

旋转图像

螺旋矩阵 II

在这里插入图片描述
分析:
  按右、下、左、上的顺序依次填充即可。
代码:

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n, vector<int>(n));
        vector<vector<int>> visited(res);
        int cnt = 1;
        int row = 0, col = 0;
        while(cnt <= n * n) {
            //右
            while(col < n && !visited[row][col]) {
                res[row][col] = cnt++;
                visited[row][col] = 1;
                col++;
            }
            col--, row++;
            //下
            while(row < n && !visited[row][col]) {
                res[row][col] = cnt++;
                visited[row][col] = 1;
                row++;
            }
            row--, col--;
            //左
            while(col >= 0 && !visited[row][col]) {
                res[row][col] = cnt++;
                visited[row][col] = 1;
                col--;
            }
            col++, row--;
            //上
            while(row >= 0 && !visited[row][col]) {
                res[row][col] = cnt++;
                visited[row][col] = 1;
                row--;
            }
            row++, col++;
        }
        return res;
    }
};

搜索二维矩阵 II

搜索二维矩阵 II

无重叠区间

在这里插入图片描述
分析:
  将所有区间按照右边界升序排列,然后循环遍历所有相邻区间:如果当前两个区间重叠,就去掉右边的区间,并把左边的区间赋给右边区间,方便下次判断。
代码:

class Solution {
public:
    static bool cmp(vector<int>& x, vector<int>& y) {
        return x[1] < y[1];
    }
    int eraseOverlapIntervals(vector<vector<int>>& intervals) {
        sort(intervals.begin(), intervals.end(), cmp);
        int cnt = 0;
        for(int i = 1; i < intervals.size(); i++) {
            if(intervals[i][0] < intervals[i - 1][1]) {
                cnt++;
                intervals[i][0] = intervals[i - 1][0];
                intervals[i][1] = intervals[i - 1][1];
            }
        }
        return cnt;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cyril_KI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值