随笔分类 -  leetcode

摘要:lc352 Data Stream as Disjoint Intervals 可以用treemap解 key保存interval的start,value保存interval的end。分别找出当前val的lowerKey(treemap中>val的最小key值,没有就返回null)和higherKe 阅读全文
posted @ 2019-05-24 13:50 南山南北秋悲 阅读(234) 评论(0) 推荐(0)
摘要:lc57 Insert Interval 仔细分析题目,发现我们只需要处理那些与插入interval重叠的interval即可,换句话说,那些end早于插入start以及start晚于插入end的interval都可以保留。我们只需要两个指针,i&j分别保存重叠interval中最早start和最晚 阅读全文
posted @ 2019-05-22 11:09 南山南北秋悲 阅读(329) 评论(0) 推荐(0)
摘要:lc287 Game of Live 难点在于不能使用额外的空间。 观察到数组中每一个元素要么为1要么为0,32位int只用了一位,可以利用bit操作,将第二次state存储到int变量的倒数第二位中。例:board[i][j] = 3, 换成二进制就是一堆0最后两位是11,表达的含义就是当前状态c 阅读全文
posted @ 2019-05-18 15:29 南山南北秋悲 阅读(274) 评论(0) 推荐(0)
摘要:这一题,我们使用了分治法。 首先看时间复杂度为o(n^2),比较naïve的方法: 使用一个数组sum[],长度为原数组长度+1,每一个元素sum[i]为原数组中index0~i-1之和,显然当sum[j] – sum[i]就是i~j-1之和,于是我们只需要两个for来遍历所有[i, j],并且比较 阅读全文
posted @ 2019-05-17 14:37 南山南北秋悲 阅读(164) 评论(0) 推荐(0)
摘要:leetcode 321 Create Max Number greedy的方法,由于有两个数组,我们很自然的想到从数组1中选i个数,数组2中选k-i个数,这样我们只需要遍历max(0, k-数组2长度n) ~ 数组1长度,然后保存合并i和k-i这两个部分之后得到的最大值即可。 那么还剩下这几个问题 阅读全文
posted @ 2019-05-17 09:37 南山南北秋悲 阅读(294) 评论(0) 推荐(0)