Leetcode
Leetcode刷题
性感程序员
这个作者很懒,什么都没留下…
展开
-
每日一题-众数(摩尔投票法)
Leetcode 题意:如题,超过1/3的数字 思路:hashmap枚举,缺点:空间复杂度提升 摩尔投票法解决空间复杂度的问题。 相互抵消。 1/2的时候形象化:和另外一个国家打架,我方人数假设大于1/2,每次出兵1个,且假设出兵会同归于尽。那么最后赢的一定是我方。 1/3的时候形象化:和另外两个国家打架,前提条件两个国家可以和平共存,三个则不能,最后剩下来的两个就是赢的。 。。。 a,b,c 这种情况都不能保证c就是最终答案,所以最后还需要遍历一次,时间复杂度O(2*n)。空间复杂度O(1) ...原创 2021-10-22 16:05:19 · 83 阅读 · 0 评论 -
每日一题-给表达式添加运算符
Leetcode 题意:就是给相应长度的数字间添加操作符。 思路:首先想到的是回溯法,然后去枚举+,-,*,无,四种情况,但是后来测试的时候发现。。。tmd可以两位数的(怪我眼瞎!审题不仔细)。然后看了下题解,发现也是神奇的回溯法。真的优美(我的天,我啥时候能写出来这么优美的代码啊,呜呜呜)。题解的思路也差不多,只是外加了一层数字拼接模拟。然后里面套了四个dfs。emm,多练习!坚持! 然后代码,是题解的代码。 class Solution { int n; String num;原创 2021-10-16 21:25:46 · 94 阅读 · 0 评论 -
每日一题-外观数组
Leetcode 题目类型:模拟,递归。 题目意思:统计字符相同的位数 思路:首先想到的就是递归解决,而且思路也比较清晰,但是找相同字符数的时候显得代码有点冗余了,一开始是这样的。 public String countAndSay(int n) { if(n == 1)return "1"; String last = countAndSay(n-1); int sn = last.length(); int num = 0;原创 2021-10-15 17:13:06 · 63 阅读 · 0 评论 -
每日一题山峰数组
LeetCode 如题,给定的数据都是符合山峰数组的要求,有暴力和二分两种方法。暴力直接枚举,第一找到的即可。 只要满足arr[mid]>arr[mid+1]即可认位找到mid 二分,这个二分比较灵活一点,找到一个第一个符合的mid并不能返回,比如下面这组数据【0 7 8 9 6 5 4 3 2 1】,mid可能在9的后面,如果返回则出错,我们应该继续让right = mid-1同时记录刚才成立的这个mid,然后继续如此。试图找到边界,官方给的题解就不错。 ...原创 2021-10-14 15:33:18 · 105 阅读 · 0 评论