LeetCode每日一题
2020年3月到4月共61天,每天置顶一题打卡,求解题目的解题思路和提交成功的代码
sinat_21791203
菜着菜着就不菜了
展开
-
LeetCode0319——最长回文串
先记录一下自己在最开始独立思考时想到的思路,首先,将字符串中的元素及其个数作为键值对存入到一个字典中,然后思维受到了简单示例的局限性,将结果分为值为奇数和值为偶数来考虑 当元素个数为偶数的话,将该值(元素个数)直接加入到偶数的结果中去 当元素个数为奇数的话,找出奇数个数的最大值 最后的结果就是所有偶数之和+奇数中的最大值 提交之后发现没有考虑到如该示例...原创 2020-03-19 23:42:24 · 100 阅读 · 0 评论 -
LeetCode0314——最长上升子序列(LIS)
首先搞清楚【子串】和【子序列】这两个名词的区别:【子串】:一定是连续的【子序列】:不一定是连续的方法一:动态规划法一般我们设计动态规划算法都需要一个dp数组,假设dp[0,...,i-1]都已经被算出来了,然后我们需要通过这些结果算出dp[i].这里定义dp[i]:以第i个数字nums[i]结尾的最长上升子序列的长度,注意nums[i]必须被选取。...原创 2020-03-14 16:28:27 · 190 阅读 · 0 评论 -
动态规划套路详解
算法技巧就那几个套路,如果你心里有数,就会轻松很多,本文就来扒一扒动态规划的裤子,形成一套解决这类问题的思维框架。废话不多说了,上干货。动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多,比如说让你求最长递增子序列呀,最小编辑距离呀等等。既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有...转载 2020-03-09 10:55:50 · 555 阅读 · 0 评论 -
LeetCode0305——分糖果(II)
题目描述排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n+ 1 颗糖果,第二个小朋友 n+ 2 颗,依此类推,直到给最后一个小朋友 2 * n颗糖果。...原创 2020-03-05 20:16:50 · 120 阅读 · 0 评论 -
LeetCode0304-腐烂的橘子
题目描述在给定的网格中,每个单元格可以有以下三个值之一:值0代表空单元格;值1代表新鲜橘子;值2代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回-1解题思路BFS广度优先搜索用队列实现搜索,很像二叉树的层次遍历过程。...原创 2020-03-04 22:25:12 · 97 阅读 · 0 评论 -
LeetCode0303-合并排序的数组
题目描述给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化A 和 B 的元素数量分别为m 和 n。解题思路方法一:直接合并后排序最简单的方法是先将数组B放进数组A的尾部,然后直接对整个数组进行排序代码:class Solution:def merge(s...原创 2020-03-03 22:08:14 · 83 阅读 · 0 评论