数据结构||浙江大学陈越课后题系列
JacobGo
一只热爱健身的程序猿。
展开
-
最大子列和(递归、在线处理)——浙大数据结构(陈越)
public class Test1 { public static void main(String[] args) { // TODO Auto-generated method stub int[] a ={-1,3,-2,4,-6,1,6,-1,-3,4,1,-4,6,2,-4,5}; System.out.println(maxSum1(a)); System.out原创 2016-12-12 16:25:29 · 1947 阅读 · 0 评论 -
PAT-堆中的路径 (Java实现)
2-3 堆中的路径 (25分)将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数NN和MM(\le 1000≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的NN个要被插入一个初始为空的小顶堆的整数。最后一行给出原创 2016-12-20 21:45:21 · 554 阅读 · 0 评论 -
PAT04-树7 二叉搜索树的操作集(Java实现)
本题为浙大数据结构课后题:BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Find( BinTree BST, ElementType X ); Position FindMin( BinTree BST ); Pos原创 2016-12-20 11:42:23 · 375 阅读 · 0 评论 -
PAT1064:Complete Binary Search Tree (Java实现)
解题要点是:二叉搜索树的中序遍历是从小到大的顺序。可以通过中序遍历和完全二叉树的条件来推断出每个节点用数组还是链表?应该用数组,该程序最后要求输出层序遍历,数组就是按照层序遍历来存储树的。通常,我们采用链表来表示的原因是,如果该树左斜或者右斜严重,用数组表示会造成存储空间的浪费,但是这道题中是完全二叉树,用数组不会造成空间浪费,所以应该使用数组来进行操作。如果我知道左子树节点个数,原创 2016-12-19 20:18:55 · 464 阅读 · 0 评论 -
PTA 5-8 哈利波特的考试 (Java实现)
题目:http://pta.patest.cn/pta/test/15/exam/4/question/716PTA - 数据结构与算法题目集(中文) - 5-8哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老原创 2017-03-06 10:33:41 · 795 阅读 · 0 评论 -
牛客网[编程题] 连续整数(Java实现)
牛牛的好朋友羊羊在纸上写了n+1个整数,羊羊接着抹除掉了一个整数,给牛牛猜他抹除掉的数字是什么。牛牛知道羊羊写的整数神排序之后是一串连续的正整数,牛牛现在要猜出所有可能是抹除掉的整数。例如:10 7 12 8 11 那么抹除掉的整数只可能是95 6 7 8 那么抹除掉的整数可能是4也可能是9输入描述:输入包括2行:第一行为整数n(1 <= n <= 50),即抹除一原创 2017-03-20 13:58:46 · 1970 阅读 · 0 评论 -
牛客网[编程题] DNA合成(Java实现)
package DNA.problem;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.next(); String str2 = sc.next原创 2017-03-20 12:13:22 · 1284 阅读 · 0 评论 -
牛客网[编程题] 最长公共连续子串
牛牛有两个字符串(可能包含空格),牛牛想找出其中最长的公共连续子串,希望你能帮助他,并输出其长度。 输入描述:输入为两行字符串(可能包含空格),长度均小于等于50.输出描述:输出为一个整数,表示最长公共连续子串的长度。输入例子:abcdeabgde输出例子:2package substring.largest.t原创 2017-03-28 10:50:25 · 2138 阅读 · 0 评论 -
牛客网[编程题] 超级素数幂(Java实现)
如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。 输入描述:输入一个正整数n(2 ≤ n ≤ 10^18)输出描述:如果n是一个超级素数幂则输出p,q,以空格分隔,行末无空格。如果n不是超级素数幂,则输出No输入例子:27原创 2017-03-25 12:28:47 · 1027 阅读 · 0 评论 -
union-find算法(java实现)
首先是最原始union-find的代码package union.find;import java.util.Scanner;public class UF { private int[] id; // 分量id(以触点作为索引) private int count; // 分量数量 public UF(int N) { count = N; id = new int[原创 2017-03-16 11:35:09 · 2401 阅读 · 0 评论 -
牛客网 好多鱼!(java实现)
牛牛有一个鱼缸。鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i] (1 ≤ i ≤ n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸。鱼缸内存在着大鱼吃小鱼的定律。经过观察,牛牛发现一条鱼A的大小为另外一条鱼B大小的2倍到10倍(包括2倍大小和10倍大小),鱼A会吃掉鱼B。考虑到这个,牛牛要放入的鱼就需要保证:1、放进去的鱼是安全的,不会被其他鱼吃掉2、这条鱼放进去也不能吃掉其他原创 2017-03-16 14:38:48 · 1220 阅读 · 0 评论 -
牛客网[编程题] 字符串分类(Java实现)
牛牛有N个字符串,他想将这些字符串分类,他认为两个字符串A和B属于同一类需要满足以下条件:A中交换任意位置的两个字符,最终可以得到B,交换的次数不限。比如:abc与bca就是同一类字符串。现在牛牛想知道这N个字符串可以分成几类。 输入描述:首先输入一个正整数N(1 输出描述:输出一个整数表示分类的个数。输入例子:4abcdabdcd原创 2017-03-26 10:16:48 · 3138 阅读 · 0 评论 -
牛客网[编程题] 页码统计(Java实现)
牛牛新买了一本算法书,算法书一共有n页,页码从1到n。牛牛于是想了一个算法题目:在这本算法书页码中0~9每个数字分别出现了多少次? 输入描述:输入包括一个整数n(1 ≤ n ≤ 1,000,000,000)输出描述:输出包括一行10个整数,即0~9这些数字在页码中出现的次数,以空格分隔。行末无空格。输入例子:999输出例子:18原创 2017-03-26 13:02:22 · 1284 阅读 · 0 评论 -
牛客网编程题:循环单词(Java实现)
如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。 输入描述:输入包括n+1行:第一行为单词个数n(1 ≤ n ≤ 50)接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成原创 2017-03-17 12:48:27 · 1757 阅读 · 0 评论 -
打印1到最大的n位数(Java实现)
本题为剑指offer面试题12package offer.day421;public class Demo1 { public static void main(String[] args) { // solve_1(3);// solve_2(3); solve_3(3); } /* * 跳进面试官的陷阱 如果n很大,用int或者l原创 2017-04-21 13:06:01 · 1208 阅读 · 0 评论 -
翻转单词顺序(Java实现)
本题为剑指offer面试题42——1牛客网测试地址::https://www.nowcoder.com/questionTerminal/3194a4f4cf814f63919d0790578d51f3[编程题]翻转单词顺序列热度指数:67941 时间限制:1秒 空间限制:32768K牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写原创 2017-05-15 10:51:31 · 1184 阅读 · 0 评论 -
PAT1086:Tree Traversals Again【Java实现】——改进版
之前的解法是:得到前序和中序遍历,建立二叉树,然后输出后序遍历后来经过陈越老师的讲解才知道,其实没有必要去建立二叉树,知道前序和中序的情况下,可以直接利用递归求得后续遍历Java代码如下:import java.util.Scanner;import java.util.Stack;/** * Tree Traversals Again 之前已经写了一篇博客,但后来发现原创 2016-12-28 10:49:45 · 564 阅读 · 0 评论 -
Java-PAT-1076.Forwards on Weibo 【Java实现】
网上都是c++版本的,所以我用Java写的不一定是最好的。如果大家有其他解法欢迎留言讨论共勉!题目:Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. He原创 2016-12-27 16:07:40 · 424 阅读 · 0 评论 -
PAT:05-图3. 六度空间 (Java实现)
“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图6.4所示。图6.4 六度空间示意图“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努原创 2016-12-25 21:48:51 · 1018 阅读 · 0 评论 -
PAT1007:Maximun Subsequence Sum Java语言实现
public class Test2 { public static void main(String[] args) { // TODO Auto-generated method stub int[] a={-1,3,-2,4,-6,-1,1,6,-1,2}; int[] b=getMaxSub(a); for(int i=0;i<b.length ;i++)原创 2016-12-12 16:53:17 · 520 阅读 · 0 评论 -
PAT:两个有序链表序列的合并(Java实现)
两个有序链表序列的合并已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。public class Test4 { public static void main(String[] args) { // TODO Auto-generated method stub LinkNode l1=new LinkNode(原创 2016-12-12 21:38:20 · 2660 阅读 · 0 评论 -
一元多项式的加法(java实现)——浙大数据结构(陈越)
public class Test5 { public static void main(String[] args) { // TODO Auto-generated method stub Node n1=new Node(); Node n2=new Node(); Node n3=new Node(); Node n4=new Node(); Node n5=n原创 2016-12-13 10:15:45 · 1550 阅读 · 0 评论 -
一元多项式的加法和乘法运算(Java实现)——浙大数据结构(陈越)
输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03转载 2016-12-13 15:46:58 · 4627 阅读 · 0 评论 -
二分查找(Java实现)
二分查找需要满足两个条件:1.必须采用顺序结构,链表不行;2.必须按照关键字大小有序排列。public class BinarySearch { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr=new int[]{1,10,13,25,46原创 2016-12-16 11:18:14 · 499 阅读 · 0 评论 -
树的同构(JAVA语言实现)
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息原创 2016-12-16 16:49:05 · 1144 阅读 · 1 评论 -
PAT 03-树2 List Leaves(Java实现)
03-树2 List Leaves (25分)Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. F原创 2016-12-16 20:36:19 · 482 阅读 · 0 评论 -
PAT1086:Tree Traversals Again Java语言实现
An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stac原创 2016-12-17 12:55:23 · 412 阅读 · 0 评论 -
PAT 04-2. File Transfer (并查集) (Java实现)
04-2. File Transfer (25)题目链接:http://www.patest.cn/contests/mooc-ds/04-2We have a network of computers and a list of bi-directional connections. Each of these connections allows a file tran原创 2016-12-21 10:18:11 · 543 阅读 · 0 评论 -
PAT1074:Reversing Linked List Java语言实现
一、题目为:Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K = 3, then you must output 3→2→1→6→5→转载 2016-12-15 11:38:27 · 490 阅读 · 0 评论 -
PAT:是否为同一棵二叉搜索树(Java实现)
是否同一棵二叉搜索树 (25分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数原创 2016-12-18 21:30:21 · 943 阅读 · 1 评论 -
PAT 06-图1:列出连通集 (Java实现)
列出连通集 (25分)给定一个有NNN个顶点和EEE条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1N-1N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数NNN(0<N≤100<N\le 100N≤10)和EEE,分别是图的顶点数和边数。随后EEE行,每行给出一条边原创 2016-12-25 13:58:07 · 885 阅读 · 0 评论 -
PAT1066:Root of AVL Tree Java语言实现
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing原创 2016-12-19 11:47:35 · 423 阅读 · 0 评论 -
PAT:Saving James Bond - Easy Version (Java实现)
This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the world's most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land原创 2016-12-25 16:52:13 · 443 阅读 · 0 评论 -
数据结构之连通集(Java)
package go.jacob.day830;/** * 连同集数据结构 * @author Jacob * */public class UF { private int count;// 记录连同集数,刚开始的时候为N private int[] id;// 用来记录每个点属于哪个集合 private int[] size;// 加权unionfind算法使用,记录每个原创 2017-08-30 10:25:38 · 1353 阅读 · 0 评论