摘要:
It Is Complete Binary Tree 第一行包含整数 N,表示树的结点个数。 树的结点编号为 0∼N−1。 接下来 N 行,每行对应一个结点,并给出该结点的左右子结点的编号,如果某个子结点不存在,则用 - 代替。 输出格式 如果是完全二叉树,则输出 YES 以及最后一个结点的编号。 阅读全文
摘要:
曾经的我,以为买好东西就是在提高生活质量和幸福感,那时的我是被消费主义洗脑的曾经的自己。仔细想想,不可否认买买买确实为我带来了物质需求层面上的满足,但是这种满足感饱和的太快了,且急剧上升后便会趋于平缓,边际效益递减得很快。甚至到最后,我意识到,再多买一件收益都可能导致效益边成负的了。因为虽然带来了暂 阅读全文
摘要:
给定一个数组,数组中包含若干个整数,数组中整数可能包含前导 0。 你需要将数组中的所有数字拼接起来排成一个数,并使得该数字尽可能小。 思路 a+b<b+a,则表示a应作为拼接结果的开头,这个想不到就没办法了... #include<bits/stdc++.h> using namespace std 阅读全文
摘要:
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素) 思路 中序遍历一棵BST会得到一个有序序列,有这个有序的序列可以很方便的用O(1)的时空统计频次(想想暴力法就是map统计整棵BST);递归需要记录的是前一个结点,这个结点不是说,每遍历一个就将pre设为当前结 阅读全文
摘要:
sharing 思路 照常输入,然后先遍历第一个链表,且将第一个链表的结点都的属性设置为访问过vis=true;再从第二条链表的开头开始遍历,遇到第一个vis=true的结点node则输出node.val,返回 #include<bits/stdc++.h> using namespace std; 阅读全文
摘要:
给定一个最多能存 M 个数字的栈,将 1∼N 按顺序压入栈中,过程中可随机弹出栈顶元素。 对于每个序列,如果可能是该栈的弹出序列,则输出一行 YES,否则输出一行 NO。 思路 一开始进栈元素一定是1(假设为v),然后因为给定的是出栈序列(假定为a),所以我们尝试将v递增至a[i](i∈[0,n)) 阅读全文
摘要:
给定 n 个区间 [ai,bi]和 n 个整数 ci。 你需要构造一个整数集合 Z,使得∀i∈[1,n],Z 中满足ai≤x≤bi的整数 x 不少于 ci 个。 求这样的整数集合 Z 最少包含多少个数。 思路 对所有线段按右端点升序排列,因为在满足条件的情况下,尽量放后面的数"容错能力"更强 #in 阅读全文
摘要:
当且仅当两头牛中间的牛身高都比它们矮时,两头牛方可看到对方。 现在,我们只知道其中最高的牛是第 P 头,它的身高是 H ,剩余牛的身高未知。 但是,我们还知道这群牛之中存在着 M 对关系,每对关系都指明了某两头牛 A 和 B 可以相互看见。 求每头牛的身高的最大可能值是多少。 方法一:差分 每头牛都 阅读全文
摘要:
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 输入: Tree 1 Tree 2 1 2 / \ / \ 3 2 1 3 / \ \ 5 4 7 输出: 合并后的树: 3 / \ 4 5 / \ \ 5 4 7 class Solution { TreeNo 阅读全文
摘要:
注意,哈希表的大小最好是素数,如果用户给出的最大大小不是素数,则必须将表大小重新定义为大于用户给出的大小的最小素数。 最后一行输出 M 次查找的平均查找时间,保留一位小数。 注意: 如果查找了 TSize 次,每次查找的位置上均有数,但都不等于要查找的数,则认为查找时间是 TSize+1。 思路 模 阅读全文