算法和数据结构

设计模式学习(五):原型模式

设计模式学习(五):原型模式 作者:Grey 原文地址: 博客园:设计模式学习(五):原型模式 CSDN:设计模式学习(五):原型模式 原型模式 原型模式是创建型模式。 如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段的值都相同),在这种情况下,我们可以利用对已有对象(原型)进 ... »

二叉树中查找后继节点问题

二叉树中查找后继节点问题 作者:Grey 原文地址: 博客园:二叉树中查找后继节点问题 CSDN:二叉树中查找后继节点问题 题目描述 给定一个二叉查找树,以及一个节点,求该节点在中序遍历的后继,如果没有则返回 null 题目链接见:LintCode 448 · Inorder Successor i ... »

二叉树的最大宽度系列问题

二叉树的最大宽度系列问题 作者:Grey 原文地址: 博客园:二叉树的最大宽度系列问题 CSDN:二叉树的最大宽度系列问题 求树的最大宽度 题目描述 给你一棵二叉树的根节点 root ,返回树的最大宽度 。 树的最大宽度是所有层中最大的宽度 。 每一层的宽度被定义为该层最左和最右的非空节点(即,两个 ... »

最大的观影时间问题

最大的观影时间问题 作者:Grey 原文地址: 博客园:最大的观影时间问题 CSDN:最大的观影时间问题 题目描述 一场电影开始和结束时间可以用一个小数组来表示["07:30","12:00"] 已知有 2000 场电影开始和结束都在同一天,这一天从 00:00 开始到 23:59 结束 一定要选 ... »

拼凑硬币问题

拼凑硬币问题 作者:Grey 原文地址: 博客园:拼凑硬币问题 CSDN:拼凑硬币问题 问题描述 现有 n1 + n2 种面值的硬币,其中前 n1 种为普通币,可以取任意枚,后 n2 种为纪念币, 每种最多只能取一枚(可能有重复值),每种硬币有一个面值,问能用多少种方法拼出 m 的面值? 题目链接见 ... »

经典背包系列问题

经典背包系列问题 作者:Grey 原文地址: 博客园:经典背包系列问题 CSDN:经典背包系列问题 问题一 题目描述 在 n 个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为Ai (每个物品只能选择一次且物品大小均为正整数) 题目链接:LintCode 92 · Ba ... »

基数排序

基数排序 基数排序(桶排序)介绍: 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾 名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用 基数排序法是属于稳定性的 ... »

纸牌博弈问题

纸牌博弈问题 作者:Grey 原文地址: 博客园:纸牌博弈问题 CSDN:纸牌博弈问题 题目描述 有一个整型数组 A,代表数值不同的纸牌排成一条线。玩家 a 和玩家 b 依次拿走每张纸牌, 规定玩家 a 先拿,玩家 b 后拿, 但是每个玩家每次只能拿走最左或最右的纸牌, 玩家 a 和玩家 b 都绝顶 ... »

象棋中的马跳步问题

象棋中的马跳步问题 作者:Grey 原文地址: 博客园:象棋中的马跳步问题 CSDN:象棋中的马跳步问题 题目描述 中国象棋中,整个棋盘就是横坐标上 9 条线、纵坐标上 10 条线的一个区域,给你三个 参数 x,y,k;返回『马』从 (0,0) 位置出发,必须走 k 步; 最后落在 (x,y) 上的 ... »

机器人到达指定位置的方法数问题

机器人到达指定位置的方法数问题 作者:Grey 原文地址: 博客园:机器人到达指定位置的方法数问题 CSDN:机器人到达指定位置的方法数问题 题目描述 链接:https://www.nowcoder.com/questionTerminal/54679e44604f44d48d1bcadb1fe6e ... »

最长公共子序列问题

最长公共子序列问题 作者:Grey 原文地址: 博客园:最长公共子序列问题 CSDN:最长公共子序列问题 题目描述 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字 ... »

泡咖啡问题

泡咖啡问题 作者:Grey 原文地址: 博客园:泡咖啡问题 CSDN:泡咖啡问题 题目描述 数组 arr 中记录每个咖啡机制造一杯咖啡的时间,假设有 m 个人,都在 0 号时间点开始排队,返回一个长度为 m 的数组,代表每个人得到咖啡的时间, 要求:最后一个得到咖啡的人的时间尽可能短。 主要思路 定 ... »

表达式得到期望结果的组成种数问题

表达式得到期望结果的组成种数问题 作者:Grey 原文地址: 博客园:表达式得到期望结果的组成种数问题 CSDN:表达式得到期望结果的组成种数问题 题目描述 给定一个只由 0(假)、1(真)、&(逻辑与)、|(逻辑或)、^(异或)五种字符组成的字符串 exp,再给定一个布尔值 desired。返回 ... »

累加和为 K 的子数组问题

累加和为 K 的子数组问题 作者:Grey 原文地址: 博客园:累加和为 K 的子数组问题 CSDN:累加和为 K 的子数组问题 题目说明 数组全为正数,且每个数各不相同,求累加和为K的子数组组合有哪些, 注:数组中同一个数字可以无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的 ... »

P 算法与 K 算法

P 算法与 K 算法 作者:Grey 原文地址: 博客园:P 算法与 K 算法 CSDN:P 算法与 K 算法 说明 P 算法和 K 算法主要用来解决最小生成树问题,即:不破坏连通性删掉某些边,使得整体的权重最小。 测评链接:牛客-最小生成树 K 算法 K 算法使用的核心数据结构是并查集,然后将边权 ... »

Morris 遍历实现二叉树的遍历

Morris 遍历实现二叉树的遍历 作者:Grey 原文地址: 博客园:Morris 遍历实现二叉树的遍历 CSDN:Morris 遍历实现二叉树的遍历 说明 Morris 遍历可以实现二叉树的先,中,后序遍历,且时间复杂度O(N), 空间复杂度可以做到O(1)。 Morris 遍历流程 假设有一棵 ... »

有向无环图的拓扑排序

有向无环图的拓扑排序 作者:Grey 原文地址: 博客园:有向无环图的拓扑排序 CSDN:有向无环图的拓扑排序 问题描述 给定一个有向图,图节点的拓扑排序定义如下: 对于图中的每一条有向边 A -> B , 在拓扑排序中 A 一定在 B 之前. 拓扑排序中的第一个节点可以是图中的任何一个没有其他节点 ... »

选择排序算法步骤分析

算法步骤 遍历整个数组,找到最小(大)的元素,放到数组的起始位置。 再遍历剩下的数组,找到剩下元素中的最小(大)元素,放到数组的第二个位置。 重复以上步骤,直到排序完成。 一共需要遍历数组元素个数-1次,当找到第二大(小)的元素时,可以停止。这时最后一个元素必是最大(小)元素。 代码 import ... »

打怪兽问题

打怪兽问题 作者:Grey 原文地址: 博客园:打怪兽问题 CSDN: 打怪兽问题 题目描述 题目链接: 牛客-打怪兽 开始时你的能力是0,你的目标是从0号怪兽开始,通过所有的怪兽。 如果你当前的能力,小于i号怪兽的能力,你必须付出money[i]的钱,贿赂这个怪兽,然后怪兽就会加入你,他的能力直接 ... »

二叉树中最大的二叉搜索子树的大小

二叉树中最大的二叉搜索子树的大小 作者:Grey 原文地址: 博客园:二叉树中最大的二叉搜索子树的大小 CSDN:二叉树中最大的二叉搜索子树的大小 题目描述 求一个二叉树中的最大二叉搜索子树的大小 题目链接见:牛客-找到二叉树中的最大搜索二叉子树 思路1 判断一棵树是否是二叉搜索树,就是要判断一棵树 ... »