算法
文章平均质量分 68
蕾雨123
自信,勤奋
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
89GrayCode
题意:格雷码是一种二进制数值系统,两个连续的数值串只相差一位。输入非负整数n表示格雷码的位数,输出从0开始的格雷码序列,声明:其实位数给定的格雷码序列并不唯一,但是测试答案只能测出一种思路:递归,n位->(n-1)位->...2位->1位,数据结构类似stack,使用ArrayList实现,(需要用到下标,元素从栈顶到栈底访问,但是不取出来),而用LinkedList实现更适合元素需要取出原创 2016-09-13 14:37:55 · 208 阅读 · 0 评论 -
11ContainerWithMostWater
题意:给定n个非负整数a1、a2,...,an,画n条竖线,满足第i条线的终点分别为(i,ai)和(i,0)。找出两条线,和x轴形成一个容器,满足装的水最多。说明:不能倾斜容器。思路:设选中的两条线分别为i,j(i 1、穷举法,依次求面积找最大,运行超时,时间复杂度O(n)2、找规律,距离逐渐减小,短边逐渐变大,求出面积最大值 时间复杂度O(n) {优快云:CODE:原创 2016-09-20 10:15:29 · 252 阅读 · 0 评论 -
297SerializeandDeserializeBinaryTree
题意:序列化是一个过程,将数据结构或者对象转化成位串,以便存进文件、缓冲区或者通过网络传输到对端再进行重构。 设计算法实现二叉树的序列化和降序列化,对算法无性能要求,仅需保证二叉树能被序列化成字符串,同时字符串能被降序列为二叉树。声明:不要使用类的成员、全局、静态的变量去存储状态,因为序列化和非序列化都是针对对象的,是无状态的。思路:类似BFS,数据结构队列,处理父原创 2016-09-21 10:30:00 · 331 阅读 · 0 评论 -
235LowestCommonAncestorofaBinarySearchTree
题意:输入一个二叉查找树(BST),和两个给定节点,在BST中找到这两个节点的最低的共同的祖先(LCA)。温馨提示:wiki对LCA的定义为两个节点的最低的祖先,即两个节点到根的首个交点,LCA用在树(计算两个节点之间的距离,即两个节点到根距离的和减去2被的LCA)或者有向无环图。思路:1、节点的层次,其中,根节点的层次是父节点层次加1(递归定义); 2、使用Ha原创 2016-09-26 10:44:17 · 269 阅读 · 0 评论 -
354RussianDollEnvelopes
题意:给定一系列的标有(w, h)的信封,当且仅当一个信封的长和宽都小于另一个信封时,才能装进去。最多能嵌套多少个信封?思路:以w为主序,h为次序将信封排序,当前信封标记为(w, h),找到宽度大于w的信封中且首个高度大于h的信封。数据结构二维数组,一维表示信封数,二维表示(w,h)。 public int maxEnvelopes(int[][] envelopes) {原创 2016-10-17 11:31:17 · 344 阅读 · 0 评论 -
458PoorPigs
题意:有1000个桶,有且仅有一个桶中包含毒药,其余的都是水。它们看起来都差不多。一头猪如果喝了毒药,将会在15分钟内死去。在一个小时内找出有毒的桶所需猪的最少数目。延伸到更一般的情况:n个桶,一头猪喝完毒药后m分钟内会死掉,要找出有毒的桶需要的最少的猪的数目。思路:参考leetcode discuss public int poorPigs(int buckets, int m原创 2016-12-21 16:58:02 · 433 阅读 · 0 评论 -
96. Unique Binary Search Trees
题意:输入n,节点值为1....n,构成的不同的bst(二叉查找树)共有多少个?思路:n:节点个数, |left|表示左子树的节点个数,|rigth|表示右子树的节点个数,递推关系:1、f(n) = sum(f(|left|*f|right|)(for root in 1,...,n, 从n个数中选择一个数作为根节点的值,剩余的数分别落在左右子树中))原创 2016-12-22 10:40:46 · 264 阅读 · 0 评论 -
16. 3Sum Closest
题意:给定n个整数的数组S,找出S中最接近目标的3个数的和,返回和。思路:由于题意只需要求和,不需要返回的元素的位置,那么可以先对数组排序,再求和 优化: 1、已经找到3个元素的和为target,停止程序; 2、i : 0->length-3, j: 0->length-2, index = binarySearch原创 2017-02-18 12:09:12 · 336 阅读 · 0 评论 -
373. Find K Pairs with Smallest Sums
题意:输入两个整形升序数组,整数k,要求分别从2个数组中取出2个数组成对,输出和最小的k个对。思路:1 参考leetcode discuss; 2 PriorityQueue实现最小堆,具体步骤如下:初始化为array1中的前k个元素(注意,如果array1中的长度小于k,则为array1.length)和array2中的首个元素组成的pair;每次从堆中剔除首个元素p(即目原创 2017-04-10 21:27:20 · 418 阅读 · 0 评论
分享