LeetCode
XinyueRao
程序媛
展开
-
LeetCode72 编辑距离
LeetCode72 编辑距离算法思想:这是一个经典的笔试面试题。这里用到DP的方法求解,dp(i)(j)表示的是第一个字符串的第i个位置和第二个字符串的第j个位置的编辑距离。要计算这个编辑距离就可以从dp(i-1)(j-1)和dp(i-1)(j)和dp(i)(j-1)这几个角度去考虑。当第i-1个字符和第j-1个字符相等的时候,dp(i)(j)=dp(i-1)(j-1),否则的话,可能是修改...原创 2020-05-16 22:02:54 · 521 阅读 · 0 评论 -
LeetCode的股票问题
LeetCode的股票问题算法思想:这里只需要记录买股票的最低价格点,并且算一下如果我在例是最低价格买入,那么今天卖出能赚多少钱,一次遍历,取最大值即可。核心思想就是一次遍历找到最大利润和最小的价格。这里的时间复杂度是O(n)class Solution {public: int maxProfit(vector<int>& prices) { ...原创 2020-05-16 22:03:12 · 447 阅读 · 0 评论 -
闫氏DP分析法
闫氏DP分析法本节是学习了B站一个大佬up主大雪菜的DP分析方法,这个UP主的很多解题思路都总结的很好,之所以叫闫氏分析法是因为UP主姓闫,这是听课笔记。下面是课程链接:https://www.bilibili.com/video/BV1X741127ZM?from=search&seid=1472099735408379551核心:从集合角度分析DP问题1.状态表示 f(i)...原创 2020-04-02 21:30:04 · 7361 阅读 · 2 评论 -
使用优先队列解决LeetCode347前K个高频元素
使用优先队列解决LeetCode347前K个高频元素优先队列也是队列,不同于普通队列是队头队尾元素进行出队和入队的操作,优先队列是寻找队列中的最大值或者最小值来进行操作。优先队列的底层实现是堆。对于堆要熟悉到白板编程的程度。C++中的优秀队列容器是priority_queue.#include<iostream>#include<queue>#include&l...原创 2020-02-26 21:17:45 · 284 阅读 · 0 评论 -
LeetCode219存在重复元素Ⅱ
LeetCode219存在重复元素Ⅱclass Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { unordered_set<int> record; for(int i=0;i<nums.size();i++){...原创 2020-02-18 10:44:47 · 162 阅读 · 0 评论 -
LeetCode中的BFS和DFS专题
LeetCode中的BFS和DFS专题BFS广度优先,是按照层来扩展的;DFS深度优先,是“一条道走到黑”。如果是一个规模为2的n次方的问题,那么BFS的时间复杂度是2的n次方,而DFS的时间复杂度是n。一般用BFS来解决迷宫的最短路径问题,这是因为DFS走到终点的时候可能是绕了一大圈才到达终点。BFS1.空间大,是呈指数增长的2.不会有爆栈的风险,申请的空间是堆空间3.可以搜索最短...原创 2020-02-10 21:56:31 · 387 阅读 · 0 评论 -
leetcode49题字母异位词分组
leetcode49题字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。比如说“eat”,“tea“,”tan",“ate”,“nat”,“bat”,那么输出的结果就是[“ate”,“eat”,“tea”][“nat”,“tan”][“bat”]在这里我们认为只有字母顺序不同的字符串是一起的,于是我们考虑到能否在这些只有字母不同的字符串...原创 2019-10-10 20:23:32 · 112 阅读 · 0 评论 -
剑指offer13 机器人的运动范围
剑指offer13 机器人的运动范围class Solution {public: int getSingleSum(int x){ int s=0; while(x){ s+=x%10; x/=10; } return s; } int getSum(pa...原创 2020-03-07 19:36:45 · 194 阅读 · 0 评论 -
LeetCode中关于二叉树和递归的相关题目解法
二叉树和递归递归结构中必须包含两个部分,一个是递归终止条件,一个是递归过程。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), ...原创 2020-02-27 11:22:18 · 148 阅读 · 0 评论 -
leetcode151翻转字符串单词
leetcode151.翻转字符串里的单词题目描述:给定一个字符串,逐个翻转字符串中的每个单词示例:输入:“the sky is blue”输出:“blue is sky the”再这里需要逐一的是输入的字符串可以在前面或者后面包含多余的空格,但反转后的单词间的空格只能减少到一个。思路:在这里考虑进行两次翻转,第一次是将"the sky is blue"翻转成“eht yks si e...原创 2019-10-27 23:28:31 · 261 阅读 · 0 评论 -
二分查找的两个模板
二分查找二分查找的思想想必大家都很熟悉了,但是把二分查找的思想落实到代码层面还是有一点小困难的。这也就是为什么二分的思想提出很多年后才有了第一个没有bug的二分查找代码。二分查找需要注意一点就是一定要在有序的数列中。二分查找代码的实现难点在于边界情况的处理。template<typename T>int binarySearch(T arr[],int n,T target)...原创 2020-02-12 19:58:34 · 230 阅读 · 0 评论 -
LeetCode376摆动序列
LeetCode376摆动序列class Solution {public: int wiggleMaxLength(vector<int>& nums) { nums.erase(unique(nums.begin(),nums.end()),nums.end()); if(nums.size()<=2) return nu...原创 2020-04-05 09:18:12 · 116 阅读 · 0 评论