随笔分类 -  【0-基础】算法

摘要:转自:labuladong公众号 子序列问题是常见的算法问题,而且并不好解决。 首先,子序列问题本身就相对子串、子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举都不容易,更别说求解相关的算法问题了。 而且,子序列问题很可能涉及到两个字符串,比如让你求两个字符串的 最长公共子序列, 阅读全文
posted @ 2020-03-04 23:28 飞翔在天 阅读(941) 评论(0) 推荐(0) 编辑
摘要:转自:labuladong公众号 很多读者反应,就算看了前文 动态规划详解,了解了动态规划的套路,也不会写状态转移方程,没有思路,怎么办?本文就借助「最长递增子序列」来讲一种设计动态规划的通用技巧:数学归纳思想。 最长递增子序列(Longest Increasing Subsequence,简写 L 阅读全文
posted @ 2020-03-04 23:22 飞翔在天 阅读(504) 评论(0) 推荐(0) 编辑
摘要:转载自:labuladong公众号 回文串是面试常常遇到的问题(虽然问题本身没啥意义),本文就告诉你回文串问题的核心思想是什么。 首先,明确一下什:回文串就是正着读和反着读都一样的字符串。 比如说字符串aba和abba都是回文串,因为它们对称,反过来还是和本身一样。反之,字符串abac就不是回文串。 阅读全文
posted @ 2020-03-04 23:11 飞翔在天 阅读(883) 评论(0) 推荐(0) 编辑
摘要:转载自:labuladong公众号 最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套路,比如说编辑距离。而且,这个算法稍加改造就可以用于解决其他问题,所以说 L 阅读全文
posted @ 2020-03-04 23:07 飞翔在天 阅读(646) 评论(0) 推荐(0) 编辑
摘要:概述 在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点” 阅读全文
posted @ 2019-12-01 08:32 飞翔在天 阅读(150) 评论(0) 推荐(0) 编辑
摘要:~ 参考 5min学算法公众号 概述 在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。 适用 阅读全文
posted @ 2019-12-01 08:30 飞翔在天 阅读(170) 评论(0) 推荐(0) 编辑
摘要:概述 Dynamic programming,缩写:DP 通过空间换取时间的算法思想 通过将原问题分解为相对简单的子问题的方式来求解复杂问题。通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解 阅读全文
posted @ 2019-12-01 08:27 飞翔在天 阅读(221) 评论(0) 推荐(0) 编辑
摘要:3、基本解题步骤或方法: 1) 明确递归函数功能。一定要明确递归程序的功能,对递归程序要完成的功能模棱两可、一知半解,往往导致逻辑混乱,写不出正确的递归程序。 2) 找出递归终止条件。所谓递归,就是在函数内部代码调用函数本身,所以,我们必须要找出递归的结束条件,否则,就会一直调用自己,陷入死循环。也 阅读全文
posted @ 2019-11-20 20:32 飞翔在天 阅读(157) 评论(0) 推荐(0) 编辑
摘要:一、特征二维数组数字查找 题目:二维数组中,每行从左到右递增,每列从上到下递增;完成一个函数: 要求:输入该数组和待查找数字,判断是否可查找到该数字; // 从数组右上角启动查询,根据查询结果判断行和列下标的变化,逐渐缩小查找范围 private static boolean findValueIn 阅读全文
posted @ 2019-10-30 11:58 飞翔在天 阅读(224) 评论(0) 推荐(0) 编辑
摘要:字符串操作:旋转字符串、字符串包含、字符串转换成整数、回文判断、最长回文子串、字符串的全排列 数组问题:寻找最小的K数,寻找和为定值的两个数、寻找和为定值的N个数、跳台阶 其他技巧:bitmap、异或、字典树 辅助学习: 1、数据结构和算法动态可视化 https://visualgo.net/zh 阅读全文
posted @ 2019-10-23 21:51 飞翔在天 阅读(181) 评论(0) 推荐(0) 编辑
摘要:概述 分治,就是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 分治法常常跟递归一起使用,借助递归,我们可以方便地将问题分解再将结果合并。 解题思路: 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相 阅读全文
posted @ 2019-10-23 21:32 飞翔在天 阅读(171) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示