数据结构和算法
生有涯,知无涯
登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。
展开
-
剑指offer64-求1+2+3+…+n
题目:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Python代码def sum(n): count = n num = n and sum(n - 1) # python A and B, A为真返回B,A为假返回A return count + numprint(sum(100)) # 5050...原创 2021-03-08 01:17:48 · 128 阅读 · 0 评论 -
剑指offer63-求股票的最大利润(Python)
题目假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股票可能获得的利润是多少?例如一只股票在某些时间节点的价格为{9, 11, 8, 5, 7, 12, 16, 14}。如果我们能在价格为5的时候买入并在价格为16时卖出,则能收获最大的利润11。思路遍历每一个数字,并保存之前最小的数字,两者差最大即为最大利润。python代码stock1 = [12, 9, 7, 5, 2, 1]stock2 = [9, 11, 8, 5, 7, 12, 16, 14]def get_max原创 2021-03-08 01:05:36 · 2485 阅读 · 0 评论 -
leetcode第589、590、429题——N叉树的前序遍历、后序遍历、层序遍历(python)
1.题目描述给定一个 N 叉树,返回其节点值的前序、后序、层序遍历。说明:树的深度不会超过 1000。树的节点总数不会超过 5000。例如,给定一个 3叉树 :2.python代码(迭代+递归)class Node(object): def __init__(self, val, children): self.val = val self.children = childrenclass Solution: def preorder原创 2021-01-28 11:33:24 · 267 阅读 · 0 评论 -
leetcode第144、94、145、102——二叉树的前序、中序、后序、层序遍历(递归+迭代)
1.问题描述如下的二叉树: 4 / \ 2 7 / \ / \ 1 3 6 8返回其前序遍历、中序遍历、后序遍历、层序遍历结果列表。前序:[4, 2, 1, 3, 7, 6, 8]中序:[1, 2, 3, 4, 6, 7, 8]后序:[1, 3, 2, 6, 8, 7, 4]层序:[4, 2, 7, 1, 3, 6, 8]2.代码(递归+迭代)# 如下的二叉树:# 4# / \# 2 7原创 2021-01-26 17:59:16 · 142 阅读 · 0 评论 -
leetcode第105、106题——根据前序遍历(或后序遍历)、中序遍历结果重建二叉树
1.描述根据一棵树的前序遍历与中序遍历构造二叉树。或者一棵树的后序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]或者中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 72.代码(递原创 2021-01-26 16:32:22 · 162 阅读 · 0 评论 -
leetcode第572题——判断一棵树是不是另外一棵树的子树
1.题目描述给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。给定的树 s: 3 / \ 4 5 / \ 1 2原创 2021-01-26 15:48:16 · 417 阅读 · 0 评论 -
leetcode第297——二叉树的序列化与反序列化(层次遍历)
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。1.需求请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:2.层序遍历解法序列化反序列化# Definition for a binary tree node.class Tre原创 2021-01-23 23:05:59 · 2144 阅读 · 0 评论 -
leetcode第144、94、145——二叉树的前序遍历、中序遍历、后序遍历
1.前序遍历给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]1.1 递归解法# Definition for a binary tree node.class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.原创 2021-01-23 21:37:52 · 135 阅读 · 0 评论 -
leetcode第206题——反转单链表(python迭代和递归实现)
反转一个单链表。1.示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL2.迭代方法2.1 代码# Definition for singly-linked list.class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: de原创 2020-12-06 16:00:15 · 666 阅读 · 0 评论 -
常见排序算法(冒泡排序、选择排序、插入排序、快速排序)
1.冒泡排序冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。"""冒泡排序"""# 第一轮,依次取索引0和1、1和2,...,n-2和n-1两两比较,小的在前大的在后。一轮结束最大的在最后# 第二轮,依次取索引0和1、1和2,...,n-3和n-2两两比较,小的在前大的在后。二轮结束次大的在倒...原创 2020-01-18 11:06:56 · 267 阅读 · 0 评论 -
MySQL 索引原理
一、MySQL索引MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引。MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。...原创 2019-10-08 15:31:48 · 196 阅读 · 0 评论 -
布隆过滤器
1.布隆过滤器1.1 什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。1.2 实现原理布隆过滤器数据结构...原创 2019-07-22 09:46:17 · 1418 阅读 · 0 评论