
算法
Xlling
这个作者很懒,什么都没留下…
展开
-
PAT 1018 锤子剪刀布(20分)
题目描述:大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:输入格式:输入第 1 行给出正整数 N,即双方交锋的次数。随后 N 行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C 代表“锤子”、J 代表“剪刀”、B 代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。输出格式:输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字...原创 2018-11-06 09:52:12 · 4079 阅读 · 1 评论 -
归并排序
题目描述:对于一个int数组,请编写一个归并排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。测试用例:输入:[1,2,3,5,2,3],6输出:[1,2,2,3,3,5]解题思路:1、递归分解数组【1,2,3,5,2,3】【1,2,3】 【5,2,3】【1,2】【3】 【5,2】【3】【1】【2】【3】【5】【2】【3】...原创 2018-11-10 18:29:49 · 170 阅读 · 0 评论 -
堆排序
题目描述:对于一个int数组,请编写一个堆排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。测试用例:[1,2,3,5,2,3],6[1,2,2,3,3,5]解题思路:手动过程:将序列按照BFS构造成完全二叉树将二叉树从下往上调整成最大堆将根元素和最后位置的节点交换位置,确定最大元素将少一个节点的二叉树从上往下调整成最大堆,反复步骤3,4;...原创 2018-11-13 09:54:38 · 173 阅读 · 0 评论 -
二叉树打印
题目描述:有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。解题思路:1、层级遍历:BFSBFS代码熟悉,借助队列2、换行输出:二维数组每一行的数据存在一维数组里数组的长度:在上一层节点弹出,这一层节...原创 2018-11-08 09:37:33 · 839 阅读 · 0 评论 -
栈的逆序
题目描述:实现一个栈的逆序,但是只能用递归函数和这个栈本身的pop操作来实现,而不能自己申请另外的数据结构。给定一个整数数组A即为给定的栈,同时给定它的大小n,请返回逆序后的栈。测试用例:输入:[4,3,2,1],4输出:[1,2,3,4]解题思路:1、移除栈底元素并返回;2、栈重元素逆序的主方法;图解:代码:class StackReverse {public...原创 2018-11-21 09:38:43 · 1169 阅读 · 0 评论 -
循环有序数组最小值练习题
题目描述:对于一个有序循环数组arr,返回arr中的最小值。有序循环数组是指,有序数组左边任意长度的部分放到右边去,右边的部分拿到左边来。比如数组[1,2,3,3,4],是有序循环数组,[4,1,2,3,3]也是。给定数组arr及它的大小n,请返回最小值。测试样例:[4,1,2,3,3],5返回:1解题思路:数组可能出现如下表示:(1)、[1,2,3,4,5] re...原创 2018-11-30 11:01:12 · 275 阅读 · 0 评论 -
非递归二叉树的遍历打印
题目描述:请用非递归方式实现二叉树的先序、中序和后序的遍历打印。给定一个二叉树的根结点root,请依次返回二叉树的先序,中序和后续遍历(二维数组的形式)。先序先序遍历的规则:根 左 右先序遍历的结果:1 2 4 5 3 6 7举例说明:1、节点1入栈,弹出、打印;2、将弹出的节点1的右孩子3先入栈,左孩子2后入栈;3、2出栈,2的右、左孩子依次入栈4、重复上述步骤,保证:...原创 2018-12-08 14:38:08 · 394 阅读 · 0 评论 -
完全二叉树计数
题目描述:给定一棵完全二叉树的根节点root,返回这棵树的节点个数。如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。给定树的根结点root,请返回树的大小。解题思路:充分考虑到完全二叉树的性质二分的思想:O(log n^2)如上图所示:当root右子树的高度和root左子树的高度一致,左部分可以直接用公式计算:2^n - 1;右部分使用递归遍历计算总结点数;如上图...原创 2018-12-04 09:35:02 · 313 阅读 · 0 评论