zxzxzx0119的博客

Java,算法

POJ2136- VerticalHistogram(统计字母个数)

PO2136- VerticalHistogram(统计字母个数) 题目链接 题意 就是给你四行字符串,然后要你统计大写字母(只有大写字母)的个数,然后以特定的方式打印出来; 解析 使用一个nums数组保存一下出现的次数,注意’A’对应的ascii码为65,所以稍微转换...

2018-07-31 20:45:43

阅读数:26

评论数:0

POJ2039-ToAndFro(竖型输出)

POJ2039-ToAndFro(竖型输出) 题目链接 题意 就是给你一个数n,和一串字符串,然后要你将这些字符串分成n列(蛇形),并且一竖一竖的打印; 解析 可以定义一个bool型变量,表示从左到右还是从右到左,然后,通过行列的关系输出即可。如果是往右边走,对应的下标...

2018-07-31 20:40:02

阅读数:30

评论数:0

多线程学习笔记 第一章  (一)

多线程学习笔记 第一章 (一) 使用Thread创建线程 使用Runnable创建线程 实例变量与线程安全 currentThread()方法 isAlive()方法 sleep()方法 getId()方法 使用Thread创建线程 使用多线程就是在使用异步;代码的执行顺序...

2018-07-31 20:30:38

阅读数:41

评论数:0

LeetCode-48. Rotate Image(将正方形矩阵旋转90度)

LeetCode-48. Rotate Image(将正方形矩阵旋转90度) 题目链接 题意 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。...

2018-07-29 23:35:50

阅读数:22

评论数:0

LeetCode-54. Spiral Matrix(圈圈打印矩阵)

LeetCode-54. Spiral Matrix(圈圈打印矩阵) 题目链接 题意 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 解析 题目不难,但是如果去一个个的打印的话会比较的麻烦,好的方法是使用矩阵分圈...

2018-07-29 23:12:56

阅读数:24

评论数:0

LeetCode-518. Coin Change 2(零钱兑换 II)(换钱的方法数问题)

LeetCode-518. Coin Change 2(零钱兑换 II)(换钱的方法数问题) 题意 暴力递归解法 记忆化搜索解法 二维dp解法 二维dp优化 滚动数组优化空间O(n) 题目链接 题意 给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数...

2018-07-29 21:03:17

阅读数:229

评论数:0

LeetCode-486. Predict the Winner(排成一条线的纸牌博弈问题)

LeetCode-486. Predict the Winner(排成一条线的纸牌博弈问题) 题意 暴力递归解法 动态规划解法 题目链接 题意 给定一个表示分数的非负整数数组。 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,...

2018-07-29 19:39:22

阅读数:71

评论数:0

LeetCode-64.Minimum Path Sum最小路径和问题

LeetCode-64-Minimum Path Sum最小路径和问题 题目大意 递归尝试版本 记忆化搜索 二维空间dp表 滚动数组优化空间O(min{N,M}) 打印解 题目链接 题目大意 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径...

2018-07-26 20:45:16

阅读数:45

评论数:0

LeetCode-354.Russian Doll Envelopes及最长上升子序列问题总结

LeetCode354-Russian Doll Envelopes及最长上升子序列问题总结 最长上升子序列普通dp法 最长上升子序列解的打印 最长上升子序列NlogN法 LeetCode354-Russian Doll Envelopes题解 最长上升子序列普通...

2018-07-26 17:52:13

阅读数:96

评论数:0

LeetCode-502.IPO -- 贪心

LeetCode502 - IPO – 贪心 题目链接 题目大意 : 给你做一些项目,每个项目有它的花费成本(运营资金)Capital,和利润Profits(一定要注意这个是纯利润,也就是说你做完这个项目之后,可以赚这么多钱,但是你的钱W必须要大于这个项目的Capital才能做),...

2018-07-21 15:57:39

阅读数:46

评论数:0

LeetCode-208. Implement Trie (Prefix Tree)以及实现字典树(前缀树)

字典树(前缀树) 结构 字典树的插入 统计某个字符串的数量 统计以某个字符串为前驱的字符串数量 字典树的删除 完整测试代码 结构 字典树也叫做前缀树,可以存储一组元素(一般是字符串),可以快速的查找某个字符串在树中的个数以及寻找以某个字符串为前缀的字符串的个数,先看下图为一些字...

2018-07-20 16:22:01

阅读数:37

评论数:0

LeetCode-222. Count Complete Tree Nodes(统计完全二叉树的结点个数)

统计完全二叉树的结点个数 题目 给出一棵完全二叉树的根节点,求完全二叉树的结点个数,要求时间复杂度小于O(n)。 解析 不知道完全二叉树概念看这个博客 遍历整个二叉树的方法是不行的,因为时间复杂度要求小于O(n)。 具体求法如下 ...

2018-07-19 15:23:08

阅读数:29

评论数:0

判断一颗二叉树是不是一颗二叉搜索树(LeetCode-98. Validate Binary Search Tree) (以及判断 完全二叉树)

判断一颗二叉树是不是一颗二叉搜索树,完全二叉树 判断一颗二叉树是不是一颗二叉搜索树 判断一颗二叉树是不是一颗完全二叉树 完整测试代码 判断一颗二叉树是不是一颗二叉搜索树 首先要知道什么是二叉搜索树(二叉排序树)(二叉查找树) : ...

2018-07-19 11:14:38

阅读数:91

评论数:0

LeetCode-110. Balanced Binary Tree(判断一棵树是否是平衡二叉树)

判断一棵树是否是平衡二叉树 套路化的解法 简单的写法 题目 给定一棵二叉树,判断该二叉树是否是平衡二叉树。 解析 这个题目重点是理解使用递归函数的技巧和套路,二叉树中的递归函数不仅仅只是用于遍历,很多二叉树相关的问题都要用到递归来解决,那...

2018-07-19 08:32:46

阅读数:40

评论数:0

折纸问题

折纸问题 题目 请把一段纸条竖着放在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开。此时折痕是凹下去的,即折痕突起的方向指向纸条的背面.如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕,下折痕和上折痕。给定一个输入参数N,代表纸条都从下边向...

2018-07-18 23:25:44

阅读数:31

评论数:0

LeetCode-297.Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

二叉树的序列化和反序列化 序列化的含义和意义 前序序列化和前序反序列化 层序序列化和层序反序列化 完整测试代码 序列化的含义和意义 含义 序列化就是把二叉树记录成文件的过程(可以是以字符串文本的方式记录)。 通过文件的内容重...

2018-07-18 16:05:58

阅读数:55

评论数:0

在一颗二叉树中寻找一个结点的后继结点(前驱结点)

在一颗二叉树树中寻找一个结点的后继结点(前驱结点) 找后继结点 找前驱结点 找后继结点 首先知道什么是后继结点,就是二叉树中序遍历的序列中,某个结点紧随的那个结点比如下面的二叉树以及对应的中序遍历顺序 则4 的后继是2 ,2的后继...

2018-07-18 14:24:16

阅读数:66

评论数:0

如何直观的打印一颗二叉树

如何直观的打印一颗二叉树 打印的结果是需要顺时针旋转90度的,如下面的结果打印出来是这样的。 如何打印呢?  需要处理以下四个问题 : 遍历树的顺序是 右子树->根->左子树 因为要 避免数字长度影响对齐的...

2018-07-18 13:28:53

阅读数:146

评论数:0

LeetCode-138.Copy List with Random Pointer(含有随机指针的链表的拷贝)(复杂链表的拷贝)

含有随机指针的链表的拷贝(复杂链表的拷贝) 问题引入 方法一 : 使用HashMap保存 方法二 : 方法二的另一种写法 方法三 : 方法二的递归版本 方法四 : O(1)的空间复杂度 完整测试代码 问题引入 给出一个比普通链表多了一个random...

2018-07-17 21:22:11

阅读数:39

评论数:0

将单链表按某值划分成左边小,中间相等,右边大的形式

将单链表按某值划分成左边小,中间相等,右边大的形式 普通方法,将链表节点放到数组然后partition 进阶方法,将链表划分成三个子链表,然后合并 普通方法,将链表节点放到数组然后partition 这个方法比较简单,直接将链表中的值保存到一个数组中,然后按照荷兰国旗的划分方式...

2018-07-17 13:30:14

阅读数:45

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭