
每日两题
油油灰
这个作者很懒,什么都没留下…
展开
-
剑指offer20 表示数字的字符串
剑指offer20之前做的时候思路比较乱,重新总结一波;按题目要求,字符串表示为数字有以下几个规则:1.首尾的空格必须去掉,不影响结果;2.+或者- 必须出现在第一位,或者e/E的后面一位;3.e和. 只能出现一次;4.e/E 后面必须有数字;5. .面不能有e/E;不满足以上条件的就是非法数字,直接返回false;class Solution {public: bool isNumber(string s) { if(s.size()==0)return false;原创 2020-08-10 13:32:53 · 163 阅读 · 0 评论 -
三数之和 四数之和相关题目
leetcode 15 三数之和leetcode16 最接近的三数之和leetcode 18 四数之和这三道题目都是一个类型,主要就是利用有序数组与双指针的一些技巧;首先给出一个基本模板,如何在一个有序数组中找到两数之和为一目标值target; int l=0,r=nums.size()-1; while(l<r) { i...原创 2020-03-10 17:07:25 · 207 阅读 · 0 评论 -
多源BFS
多源bfs方法可以解决leetcode 上的一类题,一般来说我们使用BFS都是单源的,如二叉树层次遍历等leetcode 上的很多题目,我们起始阶段只需要将某一个元素加入队列。多源顾名思义就是开始阶段加入多个元素入队列,我们也可以将其理解为存在一个超级源点。如下994题腐败的橘子,网格中存在若干个腐败橘子,我们需要求出所有新鲜橘子被腐烂的时间。如果按单源的bfs,从一个腐烂橘子开始遍历,那么...原创 2020-04-15 11:10:48 · 2316 阅读 · 0 评论 -
K个一组翻转链表
LEETCODE 25链表相关题目看起来思路容易找,但是细节和边界条件较多,很容易出错。就这道题来说,k将链表分为若干个组,我们要考虑的问题有:组内的反转,可以参考前面的链表反转;组之间的连接;如过最后一个组数目不足k的处理;大多数链表和二叉树相关的题目可以优先考虑递归的方法来做,虽然本题要求常数的空间复杂度,但还是可以试试。class Solution {public: ...原创 2020-04-07 11:43:15 · 148 阅读 · 0 评论 -
LEETCODE 72 编辑距离
leetcode72 这是一道比较典型的动态规划题目,状态转移方程比较容易给出,题目给出的三种操作插入,删除,替换三种操作,分别对应三种转移方程。1.如果两个字符串最后字符相同,情况比较简单dp[i][j]=dp[i-1][j-1]2.如果两个字符不相同dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+11.动态规划,O(mn)空间...原创 2020-04-06 10:42:27 · 102 阅读 · 0 评论 -
LEETCODE 460 实现LFU缓存
leetcode 460方法一:双哈希表法题目要求需要在常数时间完成插入和查找算法,联系之前的LRU算法,很容易想到用哈希表。具体做法如下:第一个哈希表存储 使用频率freq 和一个这样一堆映射...原创 2020-04-06 10:25:58 · 149 阅读 · 0 评论 -
leetcode 42接雨水
leetcode 42题目思路:我们要找到每一个位置雨水的高度,这个高度等于该位置左右两边最大值中的小者减去当前位置的高度。所以解决这个问题关键就变成了给定一个位置,如何找到其左右两边的最大值;方法一:用两个循环分别找到左边最大值和右边最大值,但是时间复杂度为O(n^2),无法通过测试。int trap(vector<int>& height){ int ...原创 2020-04-04 11:36:10 · 153 阅读 · 0 评论 -
leetcode 06 Z字形变换
leetcode 06这道题有点找规律的意思,参考官方解答有两种方法;方法一:一行一行的排下去,直到字符串结束;class Solution {public: string convert(string s, int numRows) { if(numRows==1)return s; //numRows为1,可以直接返回 int ...原创 2020-04-03 10:16:00 · 249 阅读 · 0 评论 -
前缀树
又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。代码实现如下:主要的成员函数有两个:search()判断某个字符串是否存在;insert()插入一个字符串;class n...原创 2020-03-28 14:00:46 · 161 阅读 · 0 评论 -
多数元素
给定一个数组,求出其中出现次数大于n/2的数字;暴力方法:先排序,直接返回第i+n/2个元素;由于排序的时间复杂度为O(n*logn),这种方法不是最优的;方法一:暴力法中对所有的元素进行排序,其实这是没有必要的,我们只需要保证最中间的那个元素...原创 2020-03-13 19:03:01 · 135 阅读 · 0 评论 -
字符串的最大公因子 /最小的k个数
第一题:一个性质:如果 str1 和 str2 拼接后等于 str2和 str1 拼接起来的字符串(注意拼接顺序不同),那么一定存在上述条件的字符串 X;证明过程还有一个性质:如果X是str1和str2公共因子,那么X的长度就是str1 和str2长度的公约数,证明过程如上链接;对于求公约数有如下经典算法:欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有...原创 2020-03-12 11:48:36 · 473 阅读 · 1 评论