![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
数据结构
wyz_267
在迷茫中寻找希望
展开
-
树
树 多叉树 从左到右是有序的 问题:元素查找效率低 BST 二叉搜索树 左子树比较小于根节点, 右子树必须大于根节点 二分查找, 问题:退化链表 AVL树 二叉树升级: (平衡树) 左右子树高度差<= 1,不然自旋 问题:要自旋 红黑树 基于AVL树的升级,损失部分查询的性能,提升插入的性能 最低子树和最高子树之差小于2倍即可 在插入时,不需要进行多次旋转,而且还加入了变色特性,满足插入和查询性能的平衡 ...原创 2020-09-23 11:28:41 · 74 阅读 · 0 评论 -
Dijkstra迪杰斯特拉
标题 目的 给一个出发点 到所有节点的最短距离是多少 要求 权值不能为负数的边, 不然可以又权值负数的环,不然一直转圈 例子原创 2020-09-23 11:22:57 · 74 阅读 · 0 评论 -
Trie
Trie 小结 一个字符串, 把字符串的每一个字符,从前往后的加到一颗多叉树上 每个结点 p值 : pass 通过值, 当前结点被通过了几次 e值: end 首尾值,成为了多少个字符串的结尾 每新加一个字符串,都是从头节点出发的 如果有走向这个字符的路,就复用。 没有路就新建。 头节点开始走,有路就用,没路就建 这棵树的作用 所有字符串字符数量是n, 建树 O(n) 查询 有没有加过 这个字符串‘abd’,加过几次 在当前节点 e值多少(哈希表也行) 有多少个字符串以 a 作为前缀 p值原创 2020-09-23 11:17:12 · 81 阅读 · 0 评论 -
二叉树(剑指offer)
目录 1. 前序+ 中序 重建二叉树 1. 前序+ 中序 重建二叉树 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def buildTree(self, p原创 2020-09-22 18:00:50 · 80 阅读 · 0 评论 -
链表 (剑指offer)
目录 1.从尾到头打印链表 1. 从尾到头打印链表 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def printListReversingly(self, head): """原创 2020-09-22 17:54:56 · 63 阅读 · 0 评论 -
数组字符串(剑指offer)
目录 找出数组中重复的数字 找出数组中重复的数字 class Solution(object): def duplicateInArray(self, nums): """ :type nums: List[int] :rtype int """ if not nums: return -1 for i in nums: if i < 0 or i原创 2020-09-22 17:33:10 · 112 阅读 · 0 评论 -
字符串(中等)
目录 LC49. 字母异位词分组 哈希表,元组 LC49. 字母异位词分组 class Solution(object): def groupAnagrams(self, strs): """ :type strs: List[str] :rtype: List[List[str]] """ dic = {} for s in strs: key = tuple(sorted(原创 2020-09-22 12:12:51 · 88 阅读 · 0 评论 -
数组(简单题)
目录 LC26. 删除排序数组中的重复项 LC26. 删除排序数组中的重复项 经典双指针:同向快慢 思路:如果这个数和前面的数一样,那么这个数就可以被抛弃掉 ->和前面的数不一样–> 目标 -->放到p2 第一个指针p1 遍历一遍,当遇到把和前面数不一样的数,放到第p2的位置, p2记得提前+1, 如果一样,不执行if语句, p1会继续往后走。 最后p2是最后一个数的下标 class Solution(object): def removeDuplicates(self,原创 2020-09-22 11:43:51 · 158 阅读 · 0 评论 -
字符串(简单题)
520. 检测大写字母 upper()字符串中字母由小写变为大写 lower()字符串中字母由大写变为小写 capitalize()字符串中字母首字母大写其余小写 title()字符串中字母每个单词的首字母大写其余小写 全大写 2全小写 3 首字母大写其他小写 class Solution(object): def detectCapitalUse(self, word): """ :type word: str :rtype:原创 2020-09-20 19:35:33 · 210 阅读 · 0 评论