随笔分类 - leetcode
摘要:前篇戳:dp入门——由分杆问题认识动态规划 导语 刷过一些算法题,就会十分珍惜“方法论”这种东西。Leetcode上只有题目、讨论和答案,没有方法论。往往答案看起来十分切中要害,但是从看题目到得到思路的那一段,就是绕不过去。楼主有段时间曾把这个过程归结于智商和灵感的结合,直到有天为了搞懂Leetco
阅读全文
摘要:题目 Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below. For example, given the
阅读全文
摘要:题目 Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ... n. Example: Input: 3 Output: [ [1,null,3,2
阅读全文
摘要:简介 如果你常刷leetcode,会发现许多问题带有Dynamic Programming的标签。事实上带有dp标签的题目有115道,大部分为中等和难题,占所有题目的12.8%(2018年9月),是占比例第二大的问题。 如果能系统地对dp这个topic进行学习,相信会极大地提高解题速度,对今后解决实
阅读全文
摘要:回溯法是一类递归算法,算法中每次只构建答案的一部分,在构建的过程中如果意识到答案不符合要求,会立刻将这一部分答案及它的所有子答案抛弃,以提高效率。
递归算法通常比较难想,容易出现做一个题时“每次都是新题”的情况。如果能够稍微记住一点简单的套路,认识到一个算法的重要点,以及文中几个题目的共性和区别,就能大大提高解算法的速度。
阅读全文
摘要:简介 用一个可伸缩的窗口遍历字符串,时间复杂度大致为O(n)。适用于“寻找符合某条件的最小子字符串”题型。 题目 链接 求某字符串T中含有某字符串S的所有字符的最小子字符串。如果不存在则返回"". 算法 用左右两个指针维护一个窗口。 WHY IT WORKS 设想一个最naive的算法如何遍历T中的
阅读全文
摘要:持续更新中(* ॑ᐜ ॑*)(* ॑ᐜ ॑*) Sliding Window (滑动窗口) 寻找符合条件的最短子字符串——SLIDING WINDOW Backtracking (回溯法) 数组排列组合问题——BACKTRACKING Dynamic Programming (动态规划) 系统学习d
阅读全文