和Count of Smaller Numbers After Self还有count of range sum是一类题,解法都差不多。BST可以做,但是这道题如果输入是有序的,简单的bst会超时,所以得用AVL来做。然后就是binary index tree的做法,计算大于nums[j]2的时候就是拿全部的sum减去sum(nums[j] 2)
动态规划问题,最后要求全部满足条件的path。subproblem是:dp[i]: possible sum of s[0, i+1],function是:dp[i] = dp[i-k] + (-prev + prev*cur, +cur, -cur)注意s[i-k+1]如果等于0,那么k只能等于1,如果有除的时候也不能是0,开头的数字单独处理,因为前面没有符号,dfs来解。还有个问题是取数字的时候可能 超过int...
363. Max Sum of Rectangle No Larger Than K 题目链接:[链接] 参考discussion里的解释:[链接] 先是如何在2d矩阵里找max sum的问题,参考视频:[链接] 然后就是一个array里面找不大于k的最大值问题了:[链接] 要找到最大的sum <= k, 用cumulative sum就是cum[j] - k <= cum[i],upper_bound就是TreeSet来做了。行...
这题和那道Find Median from Data Stream比起来多加了个sliding window。那道题巧妙的用了两个heap来找到mean,还有道题是Slide Window Maximum,同样是slide window的题。还是用两个heap来做,remove这个操作复杂度用了logk。minHeap和maxHeap,maxHeap在保存较小的一半元素,minHeap保存较大的一半元素,0 <= minHe...