数据结构与算法
文章平均质量分 85
亦难亦安
原来一无所有就是 齐天大圣。
展开
-
【刷题LeetCode】奇妙动态规划——不同路径II
动态规划解二维坐标问题prac63-不同路径II滚动数组思想动态规划类题目分为两大类求最优解统计方案数动态规划中当前问题的最优解取决于子问题的最优解,当前问题的方案数取决于子问题的方案数本文主要focus使用动态规划解决二维坐标中的状态转移问题。prac63-不同路径II一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从原创 2020-07-06 10:15:20 · 317 阅读 · 0 评论 -
【刷题LeetCode】奇妙动态规划——最长有效括号
动态规划的重点推导出状态转移方程最长有效括号题目描述题解-初步理解题解-更进一步题解-最终推导代码实现另一种神奇而被人喜欢的方法题目描述先来看下这个题目描述:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”参阅官方题解中「方法2-动态规划」题解-初步理解初始化dp数组,dp[0]*len(s)dp[i]表示以该位元素结尾的最长有效子字符串的长度在遍历字符串的时候,只原创 2020-07-04 11:14:30 · 229 阅读 · 0 评论 -
【Python】Python中栈的两种实现方式
在Python中,栈有两种实现方式:一种是list(),即stack = []另一种是deque()list()实现是建立在连续内存块的基础上的,列表中的元素彼此相邻,访问元素时速度很快,而入栈即进行append()操作的时候需要花费更多时间。deque()实现是建立在双向链表中的,每个元素都存储在自己的存储块中,并具有对下一个元素的引用。访问元素要比列表慢,但是进行push和pop操作时比较快,所以优先推荐。如果程序具有线程限制自己仅使用.append()和.pop(),那么将是线程安全的原创 2020-05-30 12:02:29 · 318 阅读 · 0 评论 -
【刷题LeetCode】二叉树 数学计算
上半月二叉树prac98 验证二叉搜索树(中等)prac572 另一个树的子树prac236 二叉树的最近公共祖先数学计算prac69 x的平方根prac50 Pow(x,n),计算x的n次幂函数二叉树prac98 验证二叉搜索树(中等)给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。来源:力扣(LeetCode)链接:https://lee原创 2020-05-12 09:33:20 · 343 阅读 · 0 评论 -
【刷题LeetCode】四月题库总结
LeetCode四月刷题总结-按类型矩阵相关采用位置坐标解题prac542-01矩阵面试题13prac200-岛屿数量prac289-生命游戏容器盛水问题prac42-接雨水prac11-盛最多水的容器这个是四月每日一题的总结,题解基本是官方题解,我按照自己的想法分了一下类方便查阅。主要使用python3解题,如果使用其他语言或者对其他解法感兴趣的可以去官方看哈~prac代表题号。矩阵相关采...原创 2020-04-22 13:16:08 · 206 阅读 · 0 评论 -
【Python】海象运算符应用
leetcode上有道面试题:判断字符是否唯一其中有一个答案是利用位运算符解决class Solution: def isUnique(self, astr: str) -> bool: t = 0 for c in astr: if t & (p := 1 << (ord(c) - 97)): ...原创 2020-04-05 14:12:20 · 245 阅读 · 0 评论 -
【Python】Trie树(字典树)的实现方式
今天学习到了Trie树字典树的详细定义可以看Trie树Stackoverflow上的简洁实践在trie树中查找单词单词的压缩编码(leetcode)Stackoverflow上的简洁实践How to create a trie in Pythonclass Trie: def __init__(self): self._end = '_end_' def m...原创 2020-03-28 11:40:13 · 356 阅读 · 0 评论 -
【Python】广度遍历有向图生成树及可视化(treelib库)
首先需求是提供一个图字典,然后用算法遍历构造树treelib构造树要求节点id的唯一性,因此我先试了一下treelib官方文档 https://treelib.readthedocs.io/en/latest/图字典:pog_dic = { "AddNewPetPage": { "add_new_pet": "DetailPage" ...原创 2020-03-02 19:25:35 · 3353 阅读 · 0 评论 -
TOP_K问题以及堆的应用
TOP_K问题以及堆的应用TOP_K问题问题简介三种解决方案时间复杂度比较堆构造堆以及堆排序TOP_K问题问题简介找出一个列表中前k大的数三种解决方案排序后切片,时间复杂度O(nlogn+k)简单排序:冒泡排序为例,时间复杂度O(kn)小根堆,时间复杂度【建堆klogk + (n-k)logk = nlogk】时间复杂度比较# -*- encoding: utf-...原创 2020-01-15 13:56:00 · 283 阅读 · 2 评论 -
三道leetcode题&一个带权有向图的ADT的python实现【3.22】
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。我的解法cl...原创 2019-03-22 22:23:42 · 474 阅读 · 0 评论 -
图的最短路径算法——Floyd算法
图的最短路径算法声明:图源 https://blog.csdn.net/qq_35644234/article/details/60875818算法代码源 https://www.jianshu.com/p/f910ce1fe7b1本文主要是代码理解的注解以及调试。。。哇,我觉得代码写的清晰的人真的很厉害啊Floyd算法转自:作者:廖少少链接:https://www.jianshu....原创 2019-03-15 12:42:16 · 1031 阅读 · 0 评论 -
链表
链表链表通过“指针”将一组零散的内存块串联起来,并不需要一块连续的内存空间。链表的插入删除操作时间复杂度是O(1),随机访问则需要O(n)的时间复杂度。循环链表优点:适用于处理的数据具有环形结构特点。约瑟夫问题删除操作删除结点中“值等于某个给定值”的结点总时间复杂度O(n):删除操作O(1),遍历查找O(n)。删除给定指针指向的结点单链表O(n)时间复杂度,双向链表O(1...转载 2018-10-21 20:36:42 · 166 阅读 · 0 评论 -
数据结构与算法中排序详解!
数据结构与算法中排序详解!!!本文是总结中国大学mooc上的电子科技大学的数据结构和算法课程,未完待续!排序的基本概念(稳定排序与不稳定排序)**稳定的排序方法:**对于任意的数据元素序列,若排序前后所有相同关键字的相对位置都不变。**不稳定的排序方法:**若存在一组数据序列,在排序前后,相同关键字的相对位置发生了变化。举个栗子~比如有一组序列:4,3,3,2排序后变成了:2,3,3...原创 2018-09-28 16:22:27 · 358 阅读 · 0 评论