LeetCode题解分析
跟着Jungle一起刷LeetCode呀!
冯Jungle
C++开发者
展开
-
[LeetCode]区间型动态规划题目解析
动态规划适用于有重叠子问题和最优子结构性质的问题。给定一个问题,如果可以将其划分为子问题,并解出其子问题,再根据子问题的解推导/递推以得出原问题的解。LeetCode上关于动态规划的题目众多,除了前述文章的最小路径、股票买卖等问题,区间型动态规划也是一类经典题目。本节将分析LeetCode上两道区间型动态规划题目。关于动态规划:[LeetCode]动态规划及LeetCode题解分析 [L...原创 2020-02-23 11:10:22 · 1292 阅读 · 0 评论 -
[LeetCode]动态规划求解博弈问题
博弈论是有趣又有用的知识,可以用来预测在特定的规则下,人们会做出怎样的行为,又会导致怎样的结果。利用博弈论来指导人们的行事法则甚至商业操作,比如著名的囚徒困境就被很好的利用在了商业竞争上。同样,LeetCode也利用博弈论出了几道有意思的题目。如何解这些博弈类的算法题目呢?如果透过题目表面,理清题目的本质,那么题目可能就是一道数学题。当然了,也可以用正儿八经的算法来求解。本文Jungle将使用...原创 2020-02-08 12:08:47 · 2161 阅读 · 0 评论 -
[LeetCode]动态规划,一招团灭最小路径问题
动态规划是求解“最小路径”的常用方法之一,LeetCode上关于“最小路径”的题目如下:64.最小路径和:https://leetcode-cn.com/problems/minimum-path-sum/ 120.三角形最小路径和:https://leetcode-cn.com/problems/triangle/ 931.下降路径最小和:https://leetcode-cn.com/...原创 2020-01-18 22:47:03 · 786 阅读 · 0 评论 -
[LeetCode]动态规划,一举歼灭“股票买卖的最佳时机“问题!
LeetCode上关于股票买卖的最佳时机一共有6到题目:在[LeetCode]买卖股票的最佳时机ⅠⅡ中,Jungle采用波峰波谷法解决了两道简单题。那么剩余4到题目该如何求解呢?其实对比6到题目,题目要求都大同小异,具体差别在于限制股票交易次数kLeetCode买卖股票的最佳时机题目对比 题目 限制交易次数k 特殊要求 121.买卖股票的最佳时机 k=1 ...原创 2020-01-12 10:36:20 · 731 阅读 · 0 评论 -
[LeetCode]买卖股票的最佳时机ⅠⅡ
2020年元旦后,股市小涨了一波,Jungle趁此机会,开始思考LeetCode上的股票买卖时机的问题。LeetCode上,关于股票时机买卖一共有6道题目:其中,简单题、中等题、困难题各三道。121. 买卖股票的最佳时机https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/给定一个数组,它的第...原创 2020-01-07 22:59:07 · 528 阅读 · 0 评论 -
[LeetCode]动态规划之打家劫舍ⅠⅡⅢ
在文章[LeetCode]动态规划及LeetCode题解分析中,Jungle介绍到求解动态规划类问题,一般分为三个步骤:明确数组元素代表的含义 寻找递推关系,务必考虑特殊情况下的递推关系 数组初始化当然,很多文章里把数组每个元素叫做一种“状态”,把相邻数组元素之间的递推关系叫做“状态转移方程”,数组初始化叫做“初始状态”。文章[LeetCode]动态规划LeetCode[简单]题全解...原创 2020-01-04 11:21:12 · 568 阅读 · 0 评论 -
[LeetCode]动态规划LeetCode[简单]题全解
在文章[LeetCode]动态规划及LeetCode题解分析中,Jungle介绍到求解动态规划类问题,一般分为三个步骤,这里做个简单回顾:动态规划是利用子问题的解推导出原问题的解,即用之前问题的解推导出之后问题的解,即利用已有的解(历史保存的解)来解未知的问题。我们一般使用数组(有一维的,更常用的是二维数组)来保存已有的解(历史记录)。动态规划解题包括三大步骤:(1)明确数组元素代表的...原创 2020-01-01 21:24:47 · 952 阅读 · 1 评论 -
[LeetCode]动态规划及LeetCode题解分析
动态规划(DP,Dynamic programming)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。给定一个问题,如果可以将其划分为子问题,并解出其子问题,再根据子问题的解推导/递推以得出原问题的解。上述描述也许使得动态规划听起来像递归,但动态规划往往用于优化递归问题,例如斐波那契数...原创 2019-12-29 21:06:25 · 819 阅读 · 2 评论 -
最大子序列求和的两种算法--C++
题目: 连续输入一串整数,空格间隔,检测到输入回车键停止,计算当前输入序列的最大子序列和。(大疆2019校招笔试题目)两种方法(可惜当时一个也不知道):#include <iostream>using namespace std;#include <stdlib.h>#include <vector>//方法1(效率高,代码简洁)int ...原创 2018-07-10 20:57:03 · 550 阅读 · 0 评论 -
[LeetCode]75.颜色分类——题解(执行用时击败90% ,内存消耗击败 78%)
1.题目描述给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]2.分析显然,最直观的方法是通过一次...原创 2019-10-09 23:58:04 · 282 阅读 · 0 评论 -
[LeetCode]巧用位运算
在编程过程中,位运算是常用的运算之一,直接对二进制位操作使得位运算比一般的操作指令更加高效。巧用位运算,可以解决一些其他运算符号难以解决或者用其他方法解决起来更加复杂的问题。1.二进制数字中“1”的位数int get_1_Count(int n){ int count = 0; while (n) { n = n&(n-1); count++; } retur...原创 2019-07-06 22:03:18 · 278 阅读 · 0 评论 -
[LeetCode]合并两个有序链表-C++
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4思路:该题其实有点像归并排序法的归并部分,即归并两个有序的子序列,可以应用归并排序法的思想。所不同的地方在于链表的操作。办法:...原创 2018-07-13 23:07:51 · 252 阅读 · 0 评论 -
[LeetCode]双指针滑动窗口法解析及LeetCode相关题解
1.经典题目引入给定一个有限数字序列,长度为n,求连续k个(k<n)数字和的最大值。看完这个题目,最简单粗暴的方法肯定是用两层for循环:int maxSum(int arr[], int n, int k){ int curSum = 0; int maxSum = 0; for(int i = 0; i <= n - k; i++){ for (int ...原创 2019-08-31 16:27:20 · 468 阅读 · 0 评论 -
[LeetCode]38.报数——题解(执行用时击败91% ,内存消耗击败 97%)
1.题目描述报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11 被读作"two 1s"("两个一"), 即21。21 被读作"one 2", "one 1"("一个二...原创 2019-09-21 15:30:44 · 532 阅读 · 0 评论