摘要:
利用中位数的概念,中位数就是将一组数分成2等份(若为奇数,则中位数既不属于左也不属于右,所以是2等份),其一组数中任何一个元素都大于等于另一组数 那么我们是不是只要一左一右配合着插入,就保证了差值+-+-+-的要求? 由于题目输入限制了,必定存在解,所以此处我们不需要担心如果重复中位数太多,出现一左 阅读全文
posted @ 2019-05-26 15:34
南山南北秋悲
阅读(167)
评论(0)
推荐(0)
摘要:
用堆解 两种实现方法 1)最大堆,o(klogn) 直接将原数组建堆 o(n) 然后弹出k次 (klogn) 返回最后一次poll()的值 2)最小堆 用数组前k个数建堆 o(k) 剩下n-k,依次插入堆中然后推出堆顶元素o((n-k)logk) 剩下的k个肯定是前k大的数,只要返回此时堆顶即可 阅读全文
posted @ 2019-05-26 15:24
南山南北秋悲
阅读(117)
评论(0)
推荐(0)
摘要:
用dp解 1)up定义为nums[i-1] < nums[i] down nums[i-1] > nums[i] 两个dp数组, up[i],记录包含nums[i]且nums[i-1] < nums[i]的最长子序列长度 down[], 记录包含nums[i]nums[i-1] > nums[i]的 阅读全文
posted @ 2019-05-26 15:04
南山南北秋悲
阅读(186)
评论(0)
推荐(0)
摘要:
记录0的个数 有两种实现方法 1)保证index之后都是0 index初值为nums.length 碰到0就swap(i, index) 注意!别忘了i减一,以防漏掉这种情况:换过来的index所指元素值为0 2)保证index之前没有0 index初值为0 碰到不是0就将当前nums[i] 赋值给 阅读全文
posted @ 2019-05-26 14:50
南山南北秋悲
阅读(158)
评论(0)
推荐(0)
摘要:
两种解法 1)记录0和1的个数 然后按照记录的个数将0和1重新放入原数组,剩下的补2 2)双指针left,right left表示0~left-1都为0,即i之前都为0 right表示right+1~nums.length都为2,即j之后都为2 遍历原数组 a)遇到为0的就把当前nums[i]与nu 阅读全文
posted @ 2019-05-26 14:19
南山南北秋悲
阅读(156)
评论(0)
推荐(0)
摘要:
lc88 Merge Sorted Array 因为两个array都已经排好序了,每次取两者间较小的放入新array中,当一个array空了,直接把另一个array剩下的全放入新array即可 阅读全文
posted @ 2019-05-26 14:01
南山南北秋悲
阅读(141)
评论(0)
推荐(0)