随笔分类 -  leetcode

摘要:746. 使用最小花费爬楼梯 思路 用动态规划的思想去做, 只要跳到倒数第二阶和倒数第一阶的时候,可以完成跳跃操作。 维护一个数组,存放跳到每阶时候的最小花费。设到i阶的时候,它有可能是从i-2阶跳上来的,也可能是i-1跳上来的,所以: f(i) = min(f(i-1)+cost[i], f(i- 阅读全文
posted @ 2020-12-21 15:00 米洛丶 阅读(100) 评论(0) 推荐(0)
摘要:389. 找不同 暴力法 使用map或者数组(因为只包含小写字母,大小固定,所以可以用数组)存放每个元素的出现次数,在s里面的次数+1,在t里面出现就-1,最后找到哪个字符是-1,就可以判断他是多出的字符了。 class Solution: def findTheDifference(self, s 阅读全文
posted @ 2020-12-18 11:10 米洛丶 阅读(120) 评论(0) 推荐(0)
摘要:738. 单调递增的数字 思路 咱也不管什么贪心什么的,只说几种情况: 情况1: 数字本身是递增的,那么直接return就可以了 1234 -> 1234 情况2: 数字先增后减 这个时候只需要找到第一个递减的位置,然后将其-1然后后面的位数都补为9即可 323 -> 299 情况3: 含有重复数字 阅读全文
posted @ 2020-12-15 14:51 米洛丶 阅读(121) 评论(0) 推荐(0)
摘要:49. 字母异位词分组 排序 遍历数组,然后对字符串进行排序,如果是异或词,那他们排序后的值也是一样,利用这一点,通过维护一个默认存放空数组的字典将他们合并到一起。 # 通俗解法 class Solution: def groupAnagrams(self, strs: List[str]) -> 阅读全文
posted @ 2020-12-14 11:33 米洛丶 阅读(94) 评论(0) 推荐(0)
摘要:623. 在二叉树中增加一行 思路 采用广度优先遍历的方式,同时在遍历的时候记录当前深度,如果深度与d相等,那么就改变当前层次树的结构,遍历完了之后直接return root即可。 需要注意的点是,如果深度为1,则可以直接创立一个新的节点,并把root赋值给树的left节点即可。(这是一个隐藏的坑, 阅读全文
posted @ 2020-12-11 14:56 米洛丶 阅读(94) 评论(0) 推荐(0)
摘要:144. 二叉树的前序遍历 递归写法 前序遍历顺序就是 根节点->左节点->右节点 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # 阅读全文
posted @ 2020-12-08 19:14 米洛丶 阅读(100) 评论(0) 推荐(0)
摘要:链接就不放了 容易被和谐 思路 贪心 只要保证每一行的数是最大的,那么总的数字就是最大的。 怎么保证每一行的数字是最大的呢,高位越大,整个数字就越大。 分3步: 把所有高位都变成1 开始遍历第2到N行,把每列里面0比较多的进行旋转,保障1比0多 遍历求和 class Solution: def ma 阅读全文
posted @ 2020-12-07 14:34 米洛丶 阅读(102) 评论(0) 推荐(0)
摘要:118. 杨辉三角 思路 如果你非要按照图片里的样子来看的话,会复杂一点,如果你按照这样的格式: 1 11 121 1331 14641 这样会好理解一点,每次要计算的数,都是上一行的同位置索引+上一行的上个位置的值,如果上一行的上个位置或者上一行的同样位置没有值,则只加上有值的部分。 class 阅读全文
posted @ 2020-12-06 14:59 米洛丶 阅读(123) 评论(0) 推荐(0)
摘要:404. 左叶子之和 思路 如果这题要求的是求所有叶子节点的和,那是不是很好做了呢? 其实这个是一样的,我们现在想要的就是求出左叶子,那么在求是否是叶子节点的时候,设立一个标志位就可以知道他是不是左叶子了。 # Definition for a binary tree node. # class T 阅读全文
posted @ 2020-12-05 12:45 米洛丶 阅读(78) 评论(0) 推荐(0)
摘要:102. 二叉树的层序遍历 树之我见 二叉树挺有意思,希望大家都能掌握。我也在为此努力! 其实树用的还是挺多的,比如我在比较2个json的差异的时候,就涉及到遍历树,如果不知道怎么去正确遍历树,还是比较麻烦的。 还有一个应用的地方就是antd的tree,当你要用到这种组件的时候,涉及到大量的递归,用 阅读全文
posted @ 2020-12-04 15:17 米洛丶 阅读(66) 评论(0) 推荐(0)
摘要:204. 计数质数 思路 枚举 一般咱们用来判断一个数比如说23是否是质数,我们可以用23除以[2, 23)里面的数字,一旦有数字大于1,该数字肯定就不是质数。 但是每次除以那么多数字,其实可以简化。 想想一下,判断x是否是y的因数(也就是x是否能被y整除) 如果x是y的因素,那么y ÷ x肯定也是 阅读全文
posted @ 2020-12-03 20:48 米洛丶 阅读(134) 评论(0) 推荐(0)
摘要:33. 搜索旋转排序数组 思路 二分法 先对着代码进行讲解。 class Solution: def search(self, nums: List[int], target: int) -> int: # low和high分别指向数组2端 low, high = 0, len(nums)-1 wh 阅读全文
posted @ 2020-12-02 15:36 米洛丶 阅读(67) 评论(0) 推荐(0)
摘要:217. 存在重复元素 思路 首先,要确定一个元素是否出现多次,那么肯定O(n)的复杂度是少不了的,因为肯定需要一次遍历. 一次遍历的话,还需要记住每个数字出现的次数,所以可以考虑用hash表记录数字出现的数字。 看了题解也没有更好的解法了,暴力法更是O(n²)的复杂度,还有一种排序后遍历,复杂度也 阅读全文
posted @ 2020-12-02 14:10 米洛丶 阅读(93) 评论(0) 推荐(0)
摘要:183. 从不订购的客户 思路 先选出订购的顾客id,然后查询没在这批id的顾客 # Write your MySQL query statement below select Name as Customers from Customers where Id not in (select dist 阅读全文
posted @ 2020-12-01 16:20 米洛丶 阅读(71) 评论(0) 推荐(0)
摘要:182. 查找重复的电子邮箱 说明 哈哈哈,标题带*说明是补卡,嘿嘿。 突发奇想想把简单的题目多刷一刷,随便找了一下居然发现有个sql题,正好复习下sql嘛~ 这题也适合测试工程师哦~ 思路 通过group by进行分组,然后找出数量大于1的即可,主要考察基础语法 # Write your MySQ 阅读全文
posted @ 2020-12-01 16:05 米洛丶 阅读(95) 评论(0) 推荐(0)
摘要:237. 删除链表中的节点 思路 因为只能在当前节点删除,又找不到current节点的前驱节点,所以要做的很简单: 就是把当前元素的值换成下一个元素的,然后把下下个元素赋给当前元素的下个元素。 比如 4 -> 5 -> 1 -> 9 要删除5的话,可以先把5的值改为1,然后把5的next指向9,即可 阅读全文
posted @ 2020-12-01 14:06 米洛丶 阅读(99) 评论(0) 推荐(0)
摘要:面试题 17.16. 按摩师 思路 典型的动态规划题目,存在多个子问题。这题与打家劫舍一模一样 这边我们设f(n)为接纳前N个客户的时长, a为预约数组 当n = 0的时候,显然f(n) = 0 当n = 1的时候,显然f(n) = a[n] 当n >= 2的时候,f(n) = max(f(n-2) 阅读全文
posted @ 2020-11-30 19:50 米洛丶 阅读(129) 评论(0) 推荐(0)
摘要:62. 不同路径 思路 这题很简单,直接动态规划即可。 公式如下: # 到达i j坐标可以从上往下也可以从左往右 f(i, j) = f(i-1, j) + f(i, j-1) (当i > 0 and j > 0) f(i, j) = 1 (当i=0或者j=0) 靠边只有1种方案 class Sol 阅读全文
posted @ 2020-11-23 23:04 米洛丶 阅读(114) 评论(0) 推荐(0)
摘要:147. 对链表进行插入排序 思路 维护一个排好序的链表,剩下的值如果比已排好的大,直接放到尾部,如果比之前小,则从链表头遍历,找到对应的位置并插入。 为了很好找到链表头,需要设置一个哑节点。 # Definition for singly-linked list. # class ListNode 阅读全文
posted @ 2020-11-23 22:56 米洛丶 阅读(99) 评论(0) 推荐(0)
摘要:34. 在排序数组中查找元素的第一个和最后一个位置 思路 看到排序数组,基本上二分解法占一半,记得刚开始去字节面试的时候,面试官出了一题找出数组(先递增再递减)的峰值,也就是什么时候开始递减的。 答的是扫描,那样如果峰值很靠后的话,算法不是最优解,利用二分可以达到O(logN),虽然最终在面试官的引 阅读全文
posted @ 2020-11-23 22:44 米洛丶 阅读(105) 评论(0) 推荐(0)