上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 23 下一页
摘要: 方法一: 我自己的方法,建一个stack,每遇到数字就推进栈里,每遇到#,就弹出一个数字,最后栈里必须剩一个#。 时间复杂度是O(n) 2. 别人的方法 每一个数字可以有两条发出的边,每个#会占用一条边,每一个数字自己本身会占用一个边,但是又会产生两个边,所以维持一个计数,一旦小于0就返回false 阅读全文
posted @ 2016-07-07 11:11 warmland 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 方法一: 我自己的方法,建一个stack,每遇到数字就推进栈里,每遇到#,就弹出一个数字,最后栈里必须剩一个#。 时间复杂度是O(n) 2. 别人的方法 每一个数字可以有两条发出的边,每个#会占用一条边,每一个数字自己本身会占用一个边,但是又会产生两个边,所以维持一个计数,一旦小于0就返回false 阅读全文
posted @ 2016-07-07 11:10 warmland 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 思路: 设置一个counter,并且用res记录第一个数字,从第二个开始,如果这个数和前一个数是一样的,那么counter++,如果不一样,就把counter--,如果counter变成0了,就把res放到当前数字上。一遍走完,返回res就好了。 因为majority的数字超过一半,它总能中和调别的 阅读全文
posted @ 2016-07-07 07:46 warmland 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 建立一个二维的表,每一个格子的值,都是以此位置为结尾的最长的增序序列。所以这个值需要上下左右四个值来确定,就是一个dfs。 需要注意的是,如果已经被算出结果的值不需要再算一遍。 所以整个dfs的结构是,算出上下左右的值,找到最大的那个,当前值是四周比它小的最长序列的长度+1,否则为1 阅读全文
posted @ 2016-07-07 07:04 warmland 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 其实我不知道这道题的point是什么………… 两种方法,hashmap/ two pointers HashMap Two pointers 阅读全文
posted @ 2016-06-30 03:50 warmland 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 和前两题已经关系不大了……是树的dfs,加上一个表track back 阅读全文
posted @ 2016-06-29 12:16 warmland 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 区别就是用了两个数组,一个强行从第一个开始,一个强行从第二个开始 阅读全文
posted @ 2016-06-29 06:41 warmland 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 到某个位置的房子为止最大的收益,是“上个房子最大收益”和“上上个房子收益+本房子的收益”中比较大的那个 因为需要用到上上个房子的值,所以至少要有三个房子,所以一个房子的时候要单独处理 阅读全文
posted @ 2016-06-29 06:11 warmland 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 这道题基于的特质是,如果是一个递减序列,那么左起第一个数就是peak element,如果是递增数列,那么右侧第一个是 所以可以使用二分搜索,如果一个mid本身并不是peak element,那么它如果比右侧大的话,那么说明左侧(包括它自己)一定有一个最优解,否则右侧(不包括它自己)一定有一个最优解 阅读全文
posted @ 2016-06-29 05:53 warmland 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 用了新的结构~priorityQueue,记得再看看用法哦 阅读全文
posted @ 2016-06-29 05:05 warmland 阅读(125) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 23 下一页