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