![](https://img-blog.csdnimg.cn/20210301203611486.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
刷Leecode
刷穿Leecode
evil心安
这个作者很懒,什么都没留下…
展开
-
leetCode-456. 132 模式(单调栈)
单调栈栈中的元素都是单调的,本题的关键就是k,从后往前遍历数组i,a[k]的数值必须大于a[i],并且在i~k中存在一个元素大于a[k]。因此选用单调栈。单调栈中维护的是不符合上述条件的k,每次遍历到新的i时查看单调栈中,比a[i]小的元素,并将其弹出,然后将自身放入栈中,同时记录弹出的值中最大的元素,因为弹出的这些元素保证前面有一个元素大于它,且下标小于它。所以每次遍历到新的a[i]时就判断当前a[i]是否小于k,如果满足就说明找到了“132”模式的值。class Solution {public原创 2021-03-26 17:17:36 · 97 阅读 · 0 评论 -
leetCode-92. 反转链表 II(迭代和递归); leeCode-206. 反转链表
迭代每次修改两个结点之间的指向关系。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) {原创 2021-03-18 21:29:31 · 109 阅读 · 0 评论 -
leecode-338 比特位计数(特殊性质)
题目描述给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。思路所有奇数的二进制都比它上一位偶数的二进制1的个数多1。所有偶数的二进制都与它的一半的二进制1的个数一样多。代码class Solution {public: vector<int> countBits(int num) { vector<int> m; m.push_back(0);原创 2021-03-03 22:03:11 · 107 阅读 · 1 评论 -
leecode-896 单调数列
本题相当简单class Solution {public: bool isMonotonic(vector<int>& A) { int flag = 0; for (int i = 0; i < A.size() - 1; ++i) { if (flag == 0 && A[i] < A[i + 1]) { flag =原创 2021-03-02 17:19:59 · 96 阅读 · 0 评论 -
leecode-304 二维区域和检索 - 矩阵不可变(前缀和的二维运算)
问题描述给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。思路可以看我之前写的有关前缀和的博客代码class NumMatrix {public: vector<vector<int>> s; NumMatrix(vector&l原创 2021-03-02 17:11:23 · 72 阅读 · 0 评论 -
leecode-11 盛最多水的容器(双指针)
问题描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。思路代码class Solution {public: int maxArea(vector<int>& height) { int ans = 0; for (原创 2021-03-02 10:08:18 · 116 阅读 · 0 评论