Leetcode 每日一题和每日一题的下一题刷题笔记 24/30

196 阅读2分钟

Leetcode 每日一题和每日一题的下一题刷题笔记 24/30

写在前面

这是我参与更文挑战的第24天,活动详情查看:更文挑战

快要毕业了,才发现自己被面试里的算法题吊起来锤。没办法只能以零基础的身份和同窗们共同加入了力扣刷题大军。我的同学们都非常厉害,他们平时只是谦虚,口头上说着自己不会,而我是真的不会。。。乘掘金鼓励新人每天写博客,我也凑个热闹,记录一下每天刷的前两道题,这两道题我精做。我打算每天刷五道题,其他的题目嘛,也只能强行背套路了,就不发在博客里了。

本人真的只是一个菜鸡,解题思路什么的就不要从我这里参考了,编码习惯也需要改进,各位如果想找刷题高手请教问题我觉得去找 宫水三叶的刷题日记 这位大佬比较好。我在把题目做出来之前尽量不去看题解,以免和大佬的内容撞车。

另外我也希望有得闲的大佬提供一些更高明的解题思路给我,欢迎讨论哈!

好了废话不多说开始第二十四天的前两道题吧!

2021.6.24 每日一题

149. 直线上最多的点数

这道题直接哈希表不谈了好吧,比直接暴力枚举要好一些,但也没那么好。哈希表存斜率,这里有个坑,和坐标轴平行的直线斜率是 0 或者不存在,这里也是八仙过海。


class Solution {
public:
    int maxPoints(vector<vector<int>>& points) {
        int len = points.size();
        if (len < 3) {
            return len;
        }
        int maxNum = 2;
        for (int i = 0; i < len; i++) {
            unordered_map<double, int> count;
            for (int j = 0; j < len; j++) {
                if (i != j) {
                    long long dx = points[i][0] - points[j][0];
                    long long dy = points[i][1] - points[j][1];
                    double gradient = dy * 1.0 / dx;
                    if (count.count(gradient)) {
                        count[gradient] ++;
                    } else {
                        count[gradient] = 2;
                    }
                    maxNum = max(maxNum, count[gradient]);
                } 
            }  
        }
        return maxNum;
    }
};

image.png

2021.6.24 每日一题下面的题

20. 有效的括号

这道题用栈,也可以窗口法,这类题有个变体,要用前缀和,之前说过。这道题够简单,直接栈就完事了。


class Solution {
public:
    bool isValid(string s) {
        int n = s.size();
        if (n % 2 == 1) {
            return false;
        }
        stack<char> stk;
        for(int i = 0; i < n; i++) {
            if (s[i] == '(') {
                stk.push(')');
            } else if (s[i] == '{') {
                stk.push('}');
            } else if (s[i] == '[') {
                stk.push(']');
            } else if (!stk.empty() && s[i] == stk.top()) {
                stk.pop();
            } else {
                return false;
            }
        }
        return stk.empty()?true:false;
    }
};

image.png

小结

哈希表降复杂度只是一种优化方式,第一题有很多优化方式,知识点很碎。 第二题考栈的概念。

参考链接