文章分类 -  leetcode算法学习

摘要:题目 704二分查找 标准的二分查找算法,需要注意的是,最大坐标和最小坐标每次重新赋值后,最大坐标需要-1,最小坐标需要+1,这样用来平衡数组的个数的奇偶 class Solution: def search(self, nums: List[int], target: int) -> int: m 阅读全文
posted @ 2022-08-15 00:02 影梦无痕 阅读(40) 评论(0) 推荐(0)
摘要:题目 这道题我这里有三个解法,我最开始只想到使用遍历计数的方式去做 方法一: 时间复杂度很高,这里用到一个数组进行分数统计,然后排序后取最大值 class Solution: def maxScore(self, s: str) -> int: arr = [] for i in range(1, 阅读全文
posted @ 2022-08-15 00:00 影梦无痕 阅读(42) 评论(0) 推荐(0)
摘要:练习题 141环形链表 方法一 解题思路 使用hash集合,把每一个节点都存入进去,迭代的时候查询该节点是否已经存在,如果存在,则是回环链表,否在不是 代码 # Definition for singly-linked list. # class ListNode: # def __init__(s 阅读全文
posted @ 2022-08-12 16:04 影梦无痕 阅读(21) 评论(0) 推荐(0)
摘要:队列是什么 如同我们在做核酸一样,排队去做。每当做完一个,则从队伍中剔除,有其他没做的人,则依次从队伍尾端加入队列。实际算法中的队列也是如此,先入先出。 时间复杂度 访问:O(N) 搜索:O(N) 插入:O(1) 删除:O(1) 题目 933最近的请求次数 解法一: 每次请求时间都添加进入队列中,然 阅读全文
posted @ 2022-08-12 00:12 影梦无痕 阅读(70) 评论(0) 推荐(0)
摘要:堆是什么 堆是一种特殊的二叉树结构,分为最小堆和最大堆 最小堆:从上到下,节点数据逐层变大的完全二叉树 最大堆:从上到下,节点数据逐层变小的完全二叉树 堆的操作 每次对堆进行增加,删除的时候,均会重新对二叉树进行排序,以保证最小堆或者最大堆,并且满足完全二叉树结构 时间复杂度 堆化:O(N) 算法题 阅读全文
posted @ 2022-08-11 17:43 影梦无痕 阅读(40) 评论(0) 推荐(0)
摘要:什么是二叉树 树描述的是节点之间的父子关系,如图所示,叶子节点是节点的子级,而子节点是根节点的子级 二叉树有三个维度:高度,深度,层级 二叉树分为三种分类:普通二叉树,完全二叉树,满二叉树 二叉树遍历的方法: 前序遍历:根节点->左子树->右子树 中序遍历:左子树->根节点->右子树 后序遍历:左子 阅读全文
posted @ 2022-08-10 14:26 影梦无痕 阅读(81) 评论(0) 推荐(0)
摘要:时间复杂度 访问:无访问这个概念 搜索:平常为O(1),如果有哈希冲突则为O(K),K是链表元素长度 删除:平常为O(1),如果有哈希冲突则为O(K),K是链表元素长度 插入:平常为O(1),如果有哈希冲突则为O(K),K是链表元素长度 练习题 217重复数据 解法一 解题思路 直接使用set去重后 阅读全文
posted @ 2022-08-10 11:09 影梦无痕 阅读(36) 评论(0) 推荐(0)
摘要:时间复杂度 访问:在hash中其实是不存在访问的概念的,因为我们是之间通过key查询的,在hash中不存在索引概念,所以key不能被看成索引 搜索:使用key进行搜索的时候是O(1),使用value搜索的时候是O(N),如果存在碰撞,则为O(K),其中K为链表的元素个数 插入:O(1) 删除:O(1 阅读全文
posted @ 2022-08-09 21:50 影梦无痕 阅读(25) 评论(0) 推荐(0)
摘要:栈是什么? 之前学过队列,是先进先出,而栈则是先进后出,栈就像一个弹夹,先装入的子弹,后被打出来 python中的栈的使用 python中没有栈这种数据结构,我们可以直接使用list模拟栈的行为 栈的时间复杂度 插入:O(1),栈只能从最上面插入元素 查询: O(N),查询栈中的的某一个元素,最坏情 阅读全文
posted @ 2022-08-09 00:07 影梦无痕 阅读(49) 评论(0) 推荐(0)
摘要:链表是什么 数组是一连串同类型元素在连续内存地址存储的一种数据结构,而链表是不连续性的,并且数据类型也不一定一样的数据结构,比如下图所示 链表的数据结构分为单向链表和双向链表,链表中每个元素存储的位置被称为节点,在单向链表的节点中,每个节点肯定有两个属性,一个是下一级节点地址信息,一般用next存储 阅读全文
posted @ 2022-08-06 21:56 影梦无痕 阅读(22) 评论(0) 推荐(0)
摘要:数组是什么? 在空间中,一个连续内存地址,并且元素类型相同的数据结构 数组的操作与时间复杂度 查询:O(1) 因为数组的内存空间是连续的,并且,数组的下标是0开始计算累加的,所以每当我们去通过下标查询数组元素的时候,被查询的位置是可以被计算出来的。比如当前有个数组,里面有四个元素,分别存储了1,2, 阅读全文
posted @ 2022-08-03 17:06 影梦无痕 阅读(39) 评论(0) 推荐(0)
摘要:时间复杂度和空间复杂度 时间复杂度 什么是时间复杂度 算法的执行效率 算法的执行时间与算法的输入值之间的关系 def test(num): total = 0 for i in range(num): total += 1 return total # 如上面代码,如果把上面的代码体中的代码,第一行 阅读全文
posted @ 2022-03-04 15:42 影梦无痕 阅读(84) 评论(0) 推荐(0)