-
我似乎开始懂什么是 Dynamic Programming 了:以 House Robber 问题为例
2020-08-25
简介 恰当地运用 Dynamic Programming 技巧能够有效地优化对特定问题的求解算法的执行效率:使空间复杂度和时间复杂度都大幅降低,本文以 LeetCode #198. House Robber 问题为例,介绍 Dynamic Programming 技巧的简单应用.这一题实际上是应用 DP 技巧的很…more
-
通过问题转化巧解 Maximum Subarray 问题
2020-08-23
简介 有时候,当我们面临一个问题并且感到不知所措的时候,不妨将问题进行适当的转化,这样做往往可以使解决方案浮现.Maximum Subarray 问题(最大子数组之和问题)是这样子的:输入一个非空数组…more
-
合并两个已排序数组的几种方法
2020-08-22
简介 通常来说,一个算法问题可以有多种解答思路和具体实现,以这样一个问题为例:给定两个数组 int[] nums1 和 int[] nums2 并且我们知道 nums1 和 nums2 都已经排好了序(升序),我们还知道 nums1 有 m 个元素,nums2 有 n 个…more
-
Longest Common Prefix 问题基于 N-ary Tree 的解法
2020-08-18
简介 借助于N元树数据结构的强大表现力,我们能将 Longest Common Prefix 问题(以下简称 LCP 问题)进行有效的抽象和化简,从而得以举重若轻地解决问题.首先,LCP 问题是指,给定一组字符串,例如 [ "aba", "abacus", "ababa", "abc" ] 从…more
-
图片旋转问题
2020-08-17
简介 当图片的像素不算太大的时候,我们可以将整张图片完全读入到内存中,并且以二维数组的形式存储,通过原地(In-place)修改数组中的元素,我们可以对图片进行「旋转」变换. 问题引出…more
-
LeetCode #22:生成所有可能括号组合——基于决策过程的解法
2020-08-14
简介 这一篇文章讨论 LeetCode #22: Generate Parentheses 的一种解法,相比于 LeetCode 网站为该题目介绍的其他解法,我们且斗胆认为我们提出的这种方法更易于理解——这是因为它更加接近人们在日常生活中面临选择时的决策过程.诸君…more