北邮84,92题的心得
来源:互联网 发布:mysql数据库分组查询 编辑:程序博客网 时间:2024/04/30 08:53
84题
时间限制 1000 ms 内存限制 65536 KB
题目描述
- Given an array with N integers where all elements appear three times except for one. Find out the one which appears only once.
输入格式
- Several test cases are given, terminated by EOF.
Each test case consists of two lines. The first line gives the length of array N(1≤N≤105), and the other line describes the N elements. All elements are ranged in [0,2^63−1].
输出格式
- Output the answer for each test case, one per line.
输入样例
- 4
1 1 1 3
10
1 2 3 1 2 3 1 2 3 4
输出样例
3
4这道题,超时超的我不要不要的,明明O(n)的时间复杂度还是超时。就找了一些别人的答案看了看,觉得应该是卡常数(学了新词)。因此换用另一种算法,虽然还是O(n)但是不再超时。
之前的思路:把每个数转化成二进制,逐位相加,放在数组(数组大小定为64)里,最后逐位模3,得到的二进制数转化为十进制即为结果。
AC的思路:定义一个二维数组,2^63 大约 10^19,所以数组为20*10。num[i][j]表示第i位出现过数字j的次数,然后从第一列遍历数组,若模3得1则直接输出j。
可见,同为O(n)也是存在差别的。(代码参照了别的博主,就不贴了)
遇到这种题上来就想换成二进制算,也不知道什么毛病。换来换去还挺耗时间的。
92题
时间限制 1000 ms 内存限制 65536 KB
题目描述
- 给出一棵有向树,一共有N(1 小于N≤1000)个节点,如果一个节点的度(入度+出度)不小于它所有儿子以及它父亲的度(如果存在父亲或儿子),那么我们称这个节点为p节点,现在你的任务是统计p节点的个数。
如样例,第一组的p节点为1,2,3;第二组的p节点为0。
输入格式
- 第一行为数据组数T(1≤T≤100)。
每组数据第一行为N表示树的节点数。后面为N−1行,每行两个数x,y(0≤x,y小于N),代表y是x的儿子节点。
输出格式
- 每组数据输出一行,为一个整数,代表这棵树上p节点的个数。
输入样例
- 2
5
0 1
1 2
2 3
3 4
3
0 2
0 1
输出样例
3
1这道题,WA也不知道为啥,找不到错在哪里,用的结构体。后来发现用邻接矩阵的方法比较优秀,而且以前没有这么用过,就换用这种方法,学习学习。
思路:定义一个二组数组作为邻接矩阵,每次输入一组节点i,j,就分别在matrix[i][j]和val[i],val[j]加一。
学习使用邻接矩阵处理两点相关的问题。代码不贴。
- 北邮84,92题的心得
- 黑马测试题的做题心得
- 黑马测试题的做题心得
- 链表倒置算法题的心得
- freemarker的使用心得,freemarker使用心得
- 编程的心得
- oracle的入门心得
- 我的一点心得
- Oracle 的入门心得
- Oracle 的入门心得
- Oracle 的入门心得
- PHP的配置心得
- Oracle的入门心得
- Oracle的入门心得
- Oracle的入门心得
- Oracle 的入门心得
- 异常的使用心得
- ListBox的一点心得!
- Java总结篇系列:Java多线程(三)
- EditBox 控件的用法
- 动态短信验证码安全防护方案
- K60定时器模块FIM的PWM,输入捕获,正交解码
- Subclipse更新地址
- 北邮84,92题的心得
- Upsync:微博开源基于Nginx容器动态流量管理方案
- parasoft Jtest 使用教程:清除错误消息与运行内置测试配置
- 未来12个趋势
- java笔记3
- 洛谷在线测试P1878_舞蹈课
- 未来12个趋势
- 关于最近研究串匹配的过程和总结
- 【随记】for 和 for in