HHU 暑假第二弹 数据结构初步
来源:互联网 发布:西溪悦榕庄 知乎 编辑:程序博客网 时间:2024/06/04 19:52
写在前面(^_^)
本周的训练专题是基础的数据结构,主要涉及到栈、队列(优先队列)、二叉树(二叉搜索树、完全二叉树、满二叉树)、散列(数字哈希)。
1000. 二叉搜索树(hdoj 3791)
题意
判断两个序列是否同为一棵二叉搜索树。
题解
这是一道很基础的纯数据结构题,数据量很小。先建立二叉搜索树(相关内容可参考该博客),然后进行先序遍历或者后序遍历,比较得到的两个序列即可。
1001. Matrix Chain Multiplication(hdoj 1082)
题意
给出n个矩阵的行数和列数(例:A 2 3 ; B 3 4),并给出矩阵相乘运算的表达式(例:(AB)),若不可以运算输出“error”,若可以运算输出运算过程中一共发生了多少次乘法运算。
题解
1.两个矩阵可以运算的条件A.col==B.row;
2.采用栈stack对表示式进行模拟处理;遇到‘(’跳过,遇到字母入栈;遇到‘)’栈顶的两个矩阵出栈,并对其进行运算(一定要注意两个矩阵的先后顺序),如果可以运算,把运算结果入栈。
1002. Sliding Window(poj 2823)
题意
有n个窗口,有一个窗口容量为k的滑动窗口,每次向右滑动一个窗口,问当前滑动窗口的最大值和最小值。
题解
1.最多有1000000个窗口,暴力求解的复杂度为o(nk),最坏情况下可达到10的12次方,很有可能超时。
2.采用优先队列(priority_queue)的数据结构,需存储每个窗口的value和index,使用两个优先队列,一个递增一个递减(以value大小作为比较标准)。遍历一次,若队首元素的index<=i-k,则将队首元素抛出,直至队首元素的index>i-k,则该队首元素为当前滑动窗口的最大/小值。
1003. Subtree(hdoj 5524)
题意
求一棵完全二叉树,有多少种子树包含的节点数量不同。
题解
1.如果一棵完全二叉树是满二叉树,则其子树依然是满二叉树;如果完全二叉树不是满二叉树,则其中一棵子树是满二叉树,另一棵是完全二叉树。
2.基于以上两点,可以根据结点的数量,进行递归求解。
1004. Snowflake Snow Snowflakes(poj 3349)
题意
雪花有6瓣,每瓣用一个整数表示,问有没有完全相同的两朵雪花。两朵雪花完全相同的条件是:以顺时针或者逆时针(两种顺序均可)的顺序,6瓣对应相等。
题解
1.最多有100000朵雪花,如果以简单粗暴的方法(复杂度o(n2))可能会超时。
2.采用数字哈希的方法,可以以(6瓣数字之和 % 较大素数)作为关键字,将雪花分类,即可降低复杂度。如果两朵雪花完全相同,则一定属于同一类(或一定具有相同的关键字)。
- HHU 暑假第二弹 数据结构初步
- HHU 暑假第三弹 数据结构进阶
- HHU暑期第二弹——数据结构初步(二叉搜索树+队列与优先队列+堆栈Stack+完全二叉树与满二叉树+哈希表)
- hhu
- HHU暑期第三弹——数据结构进阶(线段树+树状数组+并查集)
- 暑假的第二周
- 暑假集训第二场
- 暑假学习第二周
- 暑假实习第二天
- 暑假学习第二周
- 数据结构初步
- 数据结构初步
- 【暑假专题训练#数据结构】
- 暑假集训-数据结构
- 【暑假】[实用数据结构]KMP
- 暑假实训第二天
- 暑假集训第二周总结
- 2013暑假 第二周总结
- 【嵌入式开发】用 VLC 显示 树莓派摄像头 H264 裸流
- 网络参考模型与TCP/IP协议
- Web即时通讯学习(一)
- 【英语总结】七月
- 解决GridLayout API level小于21时平均分配行列的问题
- HHU 暑假第二弹 数据结构初步
- 棋盘问题
- Ubuntu 14.04下Openface的环境搭建
- python中的编码 encode decode setdefautendcoding write print
- QT在linux上的发布,写给小白看的,老手略过
- RandomAccessFile用法
- 【嵌入式开发】Raspberry Pi 树莓派性能测试
- WPF 纯代码实现自定义快捷键
- 对象的比较==和equals()