随笔分类 -  算法框架

常用算法框架
摘要:0-1背包问题(二维dp) 0-1背包升级版(二维dp) 完全背包(费解)如凑领钱(一维、二维dp) 子序列问题(重要) 最长递增子序列(一维dp) 最长公共子序列(二维dp) 最长回文子序列(二维dp) 最短编辑距离(二维dp) 最短路径(机器人走路)(二维dp) 第一步要明确两点,「状态」和「选 阅读全文
posted @ 2020-09-03 10:14 程序员曾奈斯 阅读(418) 评论(0) 推荐(0) 编辑
摘要:这里先提前注意一下,子串和子序列是两个不同的东西: 子串:连续的子字符串/数组 子序列:可以不连续(可间断)的子字符串/数组 回文串是面试常常遇到的问题(虽然问题本身没啥意义),本文就告诉你回文串问题的核心思想是什么。 首先,明确一下什:回文串就是正着读和反着读都一样的字符串。 比如说字符串aba和 阅读全文
posted @ 2020-09-01 20:53 程序员曾奈斯 阅读(196) 评论(0) 推荐(0) 编辑
摘要:快慢指针(主要解决链表中的问题) 链表中是否包括环,进而求链表中环的入口节点 链表的中间节点(重要作用就是对链表进行归并排序) 链表的倒数第k个节点 等等 左右指针(主要解决数组(或者字符串)中的问题) 二分查找 求排序树组中和为sum的两个数 反转数组(字符串) 滑动窗口(双指针技巧的最高境界) 阅读全文
posted @ 2020-08-27 10:59 程序员曾奈斯 阅读(319) 评论(0) 推荐(0) 编辑
摘要:二分算法的前提是排序数组,通过折半查找的方式,将找到目标值的时间复杂度缩小到O(logn) 最主要的3个问题 查找某元素即返回索引 查找某元素的左边界索引 查找某元素的右边界索引 二分算法框架: // 查找某元素即返回索引 int binarySearch(int num[], int length 阅读全文
posted @ 2020-08-27 08:58 程序员曾奈斯 阅读(192) 评论(0) 推荐(0) 编辑
摘要:BFS算法框架 BFS的核心思想,就是把一些问题抽象成图,从一个节点开始,向四周扩散。一般来说,写BFS都是用[队列]这个数据结构,每次将一个节点周围的节点加入到队尾。 BFS相对于DFS的最主要区别是:BFS找到的路径一定是最短的,但代价就是空间复杂度比DFS大很多。本文从两道经典的BFS题目来讲 阅读全文
posted @ 2020-08-26 21:08 程序员曾奈斯 阅读(759) 评论(0) 推荐(0) 编辑

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