随笔分类 -  leetcode

摘要:稳定性的定义假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且 ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。 稳定性的意义1、如果只是简单的进行数字的排序,那么稳定性将毫 阅读全文
posted @ 2021-03-04 08:33 bokeyuan6 阅读(314) 评论(0) 推荐(0)
摘要:总的要点: 明确dp的含义。初始化时注意限制输入,初始化后注意迭代时要从初始化之后开始!从初始化之后开始!从初始化之后开始! 步骤:明确含义和递推公式,创建dp;初始化dp;迭代dp. 二维dp和滚动数组的区别:二维dp最后一个for内更新所用的参量在该循环内不 会改变,但滚动数组会改变所用的参数( 阅读全文
posted @ 2021-02-17 17:02 bokeyuan6 阅读(94) 评论(0) 推荐(0)
摘要:leetcode455.分发饼干 题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼 阅读全文
posted @ 2021-02-16 17:30 bokeyuan6 阅读(301) 评论(0) 推荐(0)
摘要:该类问题的核心:递归过程都在“全局”变量里记录,for(横向的选择)都在递归函数里记录。 主要问题类型:排列问题,组合问题,子集问题,子序列,分割问题,其他NP问题 常用剪枝使得不重复:如果结果不要求次序与原list相对次序相同(组合,子集,排列)问题,则先将list排序再判断是否与前一个相同;如果 阅读全文
posted @ 2021-02-12 16:32 bokeyuan6 阅读(183) 评论(0) 推荐(0)
摘要:主要是深度遍历(stack,因为是一直走到头)和层序遍历(deque)的递归和迭代写法。 另外注意:因为求深度可以从上到下去查 所以需要前序遍历(中左右),而高度只能从下到上去查,所以只能后序遍历(左右中)。 所有题目首先考虑root否是空。有的需要考虑root是否是范围内合理的起点。其他细节:每次 阅读全文
posted @ 2021-02-09 11:01 bokeyuan6 阅读(244) 评论(0) 推荐(0)
摘要:取数组中点时不要写 int mid = (left + right) // 2;,「这么写有一个问题:数值越界,例如left和right都是最大int,这么操作就越界了,在二分法中尤其需要注意!」 所以可以这么写:int mid = left + ((right - left) // 2); 阅读全文
posted @ 2021-02-05 20:26 bokeyuan6 阅读(67) 评论(0) 推荐(0)
摘要:之前一直没有注意过该问题,在leetcode144中写递归发现该问题,不知道递归函数传参是指针还是引用。 参考:http://c.biancheng.net/view/2258.html 如果是不可变对象,如常数,字符串等,传入引用。如果是可变对象,如字典,列表等,传入引用。 阅读全文
posted @ 2021-02-03 10:08 bokeyuan6 阅读(54) 评论(0) 推荐(0)
摘要:通过维护最小堆排序,使用heapq模块 一般使用规则:创建列表 heap = [] 函 数 描 述 heapq.heappush(heap, x) 将x压入堆中 heapq.heappop(heap) 弹出最小的元素 heapq.heapreplace(heap, x) 弹出最小的元素,并将x压入堆 阅读全文
posted @ 2021-02-02 10:53 bokeyuan6 阅读(78) 评论(0) 推荐(0)