lily's blog

Thinking will not overcome fear but action will.

链表

一、链表知识总结 二、链表做题心得 链表定义 class LinkNode(self, val=None): # self表示创建的对象自身,定义了对象自带的属性和方法 self.val = val self.next = None # 实例化链表并用头插法添加元素 # 已存在头节点 head = LinkNode(val1) def createLink_head(v...

递归算法_函数

定义 为什么可以使用递归 递归函数的实现原理(程序内部) 带有多个return 出口的递归函数 有返回值 无返回值 递归函数的测试 递归函数中局部变量和全局变量 递归函数在结构上分三部分 递归函数调用自身前 递归调用自身时 递归调用自身后 ...

贪心题况详情

摆动数列 求摆动 子序列 的 最大长度 问题: 摆动子序列 :如何衡量是否摆动 最大长度:如何遍历一遍找到最大长度 解决思路: 记录上两个数之间的差值,规定等于 i -(i+1),大于零则为上坡,小于零则为下坡,若能保持上下坡交替关系期间的子序列为 摆动子序列。 由此可以看出必须使用两个变量a, b 一个记录上一段坡度是否与当前坡度【相反】 ...

算法题合集(简单收录)

不是主流思想里的解题角度和思路的合集 422 数组中重复的数字: 时间复杂度O(n),空间复杂度O(1),仅使用常量额外空间的算法解决此问题。(输入输出的空间不算额外的空间,以列表或者其他任何形式存储的输出空间) 要点: 【用我查别人】假如没有重复的数字,那么由题意,每个数字都会对应唯一的下标(用数字作下标);而现在有重复的数字,用数字做...

树相关概念: 节点的度:一个节点含有的子树的个数称为该节点的度; 树的度:一棵树中,最大的节点度称为树的度; 叶节点或终端节点:度为零的节点; 非终端节点或分支节点:度不为零的节点; 父亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点; 兄弟节点:具有相同父节点的节点互称为兄弟...

数据结构以及相关算法

主流的数据结构与必须要掌握的算法思想 数据结构与算法简介 程序 = “数据结构”+“算法” 数据结构是程序实现的工具 算法是动态的存在于程序运行的过程 数据结构表达了多种数据间的关系 基本数据结构 逻辑结构:线性结构、树、图 物理结构:数据结构在实际代码中的实现 刷题顺序参...

排序查找算法

刷题顺序参考: 数组——>链表——>哈希表——>字符串——>栈与队列——>树——>回溯——>贪心——>动态规划——>图论——>高级数据结构 学习思维导图 时间复杂度和空间复杂度 时间复杂度 概念:用于评估代码运行所需要时长的衡量单位 O(1),一段代码运行一个单位数量级 O(n),...

排序查找算法

线性表的查找 线性查找——linear search 按顺序依次往后查找 二分查找——binary search 时间复杂度:每次查找,循环减半,时间复杂度为O(logn) ```python class Solution(object): def search(self, nums, target): left = 0 right = ...

快速傅里叶变换FFT

以两个同次高阶多项式乘法为例 两个多项式系数相乘Pe=[p0,p1…],Po=[p0,p1…],时间复杂度为O(n^2) 为了降低时间复杂度,用n+1个点来表示n阶的多项式,那么只用对应点处函数值相乘,就可以得到结果多项式对应的点,时间复杂度降为O(n) 任一n阶的函数都可以凭借n+1个点来确定 如何取点,如果我们取n个点,每个点都要计算函数值,其实又相...

回溯算法

回溯的本质是穷举 把要穷举的问题抽象为树形结构 横向遍历(遍历遍及一维数组内所有数据) 纵向遍历(纵向深度由递归深度控制) 穷举模板 枚举剪枝 数据的共享和重复使用 “树枝剪枝” “树层剪枝” 组合问题(有无重复数据)、分割问题(按顺序分割) 回溯函数模板 ...