随笔分类 - 算法分点
摘要:1.三者都是能存储字符串,string 比较常用,可以将char【】或者一些整形转换成string,也可以用分割,把字符串分割成字符串数组。 2.StringBuilder 和StringBuffer 两者各有特点,但相较于String 来说功能基本一致,主要是方便字符串的增上改查。 比如:appe
阅读全文
摘要:1.算法核心本质是将数据使用StringBuilder 或者StringBuffer 的方法reverse()反转,也就是倒序,检验前后两个值是否相等。 缺点:都是要从开头到结尾一个数一个数的遍历来求的,如果遍历数据很大,即使时间复杂度是O(n)也会很慢。 所以需要改进,改进的原理是根据规律: 1位
阅读全文
摘要:1.KMP算法 1.1定义,区别与暴力算法,直接一个一个字符串匹配,是一个快速的应用于字符串文本和某段字符串之间的匹配算法。 1.2准备工作: 1.2.1.前缀,找到最长公共的前后缀的列表。 (参考视频:https://www.bilibili.com/video/BV1Px411z7Yo?spm_
阅读全文
摘要:1.定义 1.1回溯是配合递归使用的,相当于递归的一种工具。递归是穷举搜索法的一种,效率不高,所以需要工具。回溯法就是通过剪枝技术来加快穷举搜索的速度。 1.2dfs算法当中,单一的递归解决不了问题的时候,就需要回溯来辅助配合,将递归前的节点操作取消。 1.3回溯的步骤是在递归函数下面,复杂,但是也
阅读全文
摘要:1.核心思想 双指针本质其实就是两个指针,只是不同的玩法而已 2.解决问题: 2.1滑动窗口 2.2移动队列 (都是对双指针的高级应用) 3.常见例题应用 3.1二分查找 3.2两数之和 3.3不重复最长字串。(有点贪心的感觉)
阅读全文
摘要:1.核心思想 和贪心一样,也是分解成小问题之后解决,但是和贪心不一样,动态规划是有一根线链接的,当前状态是和上一个状态有关,当前最优+上一最优,而不断递推回去,最后初始状态肯定是可以确定的, 就能得到最后最优的状态 2.问题分类: 2.1基础题目 2.2背包问题 3.2打家劫舍 3.3股票问题 3.
阅读全文
摘要:1.核心思想: 将问题分为子问题,而解决子问题当中,只要满足局部最优,最后可以达到全局最优解。 2.问题分类: 1.分配问题 求最大数,给单位1分配的最优,集合之后就是分配的全部最优 2.区间问题 求最小值,处理一块最大覆盖区间则为当前最优 3.股票买卖 只求买卖数,满足今天买明天可以卖即可,不要考
阅读全文
摘要:暴力的核心就是枚举出所有的可能性 比较经典的是蓝桥杯的粘木棍。 通过二进制10001,的方式来表示第几根木棍使用了,再通过位运算和与运算来比较是否包含。 经典例题: 无聊的逗
阅读全文
摘要:一:选择排序 1.核心思想 准备一个指针,默认第一个值是最小值,从第二个值开始遍历,每次循环都让指针指向最小值的下标,再和当前的循环下标交换数值。 比如 1 3 0 1、 外围要循环3次,(要选择出3个最小值或者最大值,)内围要循环的次数是外围+1 到最后一位(也就是外围是i 内围是j 的话,j=
阅读全文
摘要:知识点: 一:核心思想 两个指针,left,right.分别指向头0 和尾部n-1.在一个已经有序的数组当中,根据 mid = (left+right)/2 来不断缩小查找目标所在的下标,最终实现查找的时间复杂度是(log n)只查找一半的数组就能完成。 二:查找对象分类 一个:直接简单查找就行 多
阅读全文
摘要:1.定义: 1.1 递归,就是方法本身去调用自己的一个副本来求解小问题来最后求解一个大问题,递归会产生很多副本,所以确保递归终止非常重要,也就是要有递归终止条件。 1.2 递归每调用自己一次,都会使问题更简单一点,不断的缩小问题序列最终能够收敛到一种基本情况(也就是非常容易解出来的简单问题) 1.3
阅读全文

浙公网安备 33010602011771号