数据结构与算法
文章平均质量分 81
lankuohsing
自动化研究生
展开
-
k-sum问题及变种题算法总结(持续更新中)
文章目录1. 青铜级: leetcode-[1\. 两数之和](https://leetcode-cn.com/problems/two-sum/)1. 青铜级: leetcode-1. 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。虽然本级是青铜级,但是如果你写两层for循环时间复.原创 2021-12-06 23:35:00 · 1262 阅读 · 0 评论 -
数据结构与算法之原地操作数组相关
1. 在数组中删除符合指定条件的元素,空间复杂度O(1)1.1. leetcode-27. 移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。思路:用两个指针从起始位置开始往后走,一个j用于记录当前有效位置,另一个i用于遍历数组所有元素。当i指向的元素不需要移除,则放到i处,并让i+1;原创 2021-12-05 20:44:56 · 474 阅读 · 0 评论 -
基于动态规划的编辑距离计算公式及应用
文章目录1. 编辑距离的定义2. 基于动态规划的求解算法2.1. 递推公式https://www.jianshu.com/p/a617d20162cf1. 编辑距离的定义编辑距离(Minimum Edit Distance,MED),由俄罗斯科学家 Vladimir Levenshtein 在1965年提出,也因此而得名 Levenshtein Distance。编辑距离一般用于度量两个序列相似程度的指标,具体来说,它计算的是一个序列A最少可以经过多少次操作变成另一个序列。这里的操作包括以下三种:.原创 2021-10-29 23:28:52 · 717 阅读 · 0 评论 -
数据结构基础——链表相关操作及应用(含python代码,更新中)
文章目录0. 链表的数据结构描述1. 常见操作1.1 删除链表中的结点1.2 合并有序链表1.3. 反转链表众所周知,计算机中的数据结构底层无非是链表(linked list)或者线性表(linear list)。因此,掌握这些基本的数据结构的结构和常用操作是很重要的。本文我们来介绍一下链表的常用操作,主要采用经典算法题的形式来加以呈现说明0. 链表的数据结构描述略1. 常见操作1.1 删除链表中的结点leetcode-237 237. 删除链表中的节点请编写一个函数,使其可以删除某个链表中.原创 2021-07-06 22:17:34 · 282 阅读 · 1 评论 -
霍夫曼树-原理、代码实现与应用
文章目录0. 从霍夫曼编码讲起1. 二叉树一些基本概念1.1. 路径1.2. 路径长度1.3. 节点的权1.4. 节点的带权路径长度1.5. 树的带权路径长度2. Huffman树的构建3. 代码实现(python)4. 应用https://blog.csdn.net/google19890102/article/details/54848262https://zh.wikipedia.org/wiki/%E9%9C%8D%E5%A4%AB%E6%9B%BC%E7%BC%96%E7%A0%810. .原创 2021-05-10 23:39:17 · 659 阅读 · 0 评论 -
二叉树遍历相关算法代码实现
文章目录0. 二叉树的定义:1. 前序遍历1.1. 递归方式前序遍历:1.2. 非递归方式前序遍历2. 中序遍历2.1. 递归方式中序遍历:2.2. 非递归方式中序遍历3. 后序遍历3.1. 递归方式后序遍历:3.2. 非递归方式后序遍历完整版python代码见https://github.com/lankuohsing/DataStructureInPython/blob/main/tree/binary_tree/binary_tree.py欢迎给star!0. 二叉树的定义:Python版实.原创 2021-05-07 20:34:09 · 291 阅读 · 0 评论 -
算法基础之回溯与深度优先遍历
文章目录1. 回溯算法的三要素2. 回溯算法的例子2.1. 求子集问题 “回溯法”也称“试探法”。它是从问题的某一状态出发,不断“试探”着往前走一步,当一条路走到“尽头”,不能再前进(拓展出新状态)的时候,再倒回一步或者若干步,从另一种可能的状态出发,继续搜索,直到所有的“路径(状态)”都一一试探过。回溯算法可以看做是深度优先遍历算法的一种。深度优先搜索可以采用递归(系统栈)和非递归(手工栈)两种方法实现。往往需要记录整颗搜索树。回溯算法一般不用记录整颗搜索树。1. 回溯算法的三要素回.原创 2020-09-29 00:12:47 · 2009 阅读 · 2 评论 -
算法基础之递归与动态规划
文章目录1. 递归算法的适用场景2. 递归的三要素3. 递归的缺点4. 递归算法的例子4.1. Fibonacci数列4.1.1. 解法一:原始的递归不做任何优化4.1.2. 带备忘录的递归算法1. 递归算法的适用场景当一个大规模的问题与小规模的问题有着相同的形式,解决大规模的问题和解决小问题的方法是同一个方法时,就可能可以用递归的算法来解决。递归算法的特点为:一个函数递归调用本身(由后向前),通过递归调用来缩小问题的规模,直到组中遇到退出条件,再由前向后组装出目标解。2. 递归的三要素明确函数.原创 2020-09-19 00:32:55 · 1490 阅读 · 2 评论