算法学习
张小幺
这个作者很懒,什么都没留下…
展开
-
算法学习笔记——排序算法的总结
先简单说明每个排序的特点,记住每个排序的重点以后才不会弄混,即使忘记了代码的具体实现,也可以按照算法的思路写出代码以及计算时间复杂度和空间负责度。 冒泡排序—冒“大泡”or冒“小泡” 利用两个for循环遍历数据 快速排序—利用base基准数把数组分为两部分 左边小于base右边大于base 然后递归进行 直至最终排序完成 选择排序—选择最大或者最小的数和一端数据进行直接交换 插入排序—直接插入排序,按顺序取一个数插入到已经有序的序列中 希尔排序—是插入排序堆一种,增加了一个步长的概念,假设数组长10,步长原创 2020-07-16 18:23:45 · 148 阅读 · 0 评论 -
算法学习笔记—最长不重复子串 滑动窗口 java
这道题是leetcode第三题非常经典 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke”原创 2020-07-13 19:43:26 · 464 阅读 · 0 评论 -
算法学习笔记——最长公共子序列 动态规划 Java
最长公共子序列 最长公共子序列是一个在一个序列集合中(通常为两个序列)用来查找所有序列中最长子序列的问题。一个数列如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则称为已知序列的最长公共子序列。(百度百科) 一般来说有两个思路解决这个问题 枚举 和动态规划 本文只考虑动态规划的方式 动态规划算法 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题原创 2020-07-11 14:46:22 · 372 阅读 · 0 评论