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