(资料图)
【SortedList】math.isqrt(x) 方法返回 x 的平方根,并将平方根数向下舍入到最接近的整数。
【最大堆模拟】原地堆化可以做到 O(1) 额外空间。先乘-1转成负数
统计范围内的元音字符串数
【前缀和】先预处理words,判断是否符合要求,符合视为1,不符合视为0,求前缀和,ans就是s[r + 1] - s[l]。
打家劫舍 IV
【二分 + DP】“最大化最小值”、”最小化最大值“想到二分。设二分的最大金额为mx,定义f[i]表示前i个房屋中偷取金额不超过mx的房屋的最大个数。不选第i个房屋,f[i] = f[i - 1],选第i个房屋(前提是金额不超过mx),f[i] = f[i - 2] + 1,这两者取最大值: f[i] = max(f[i - 1], f[i - 2] + 1)。代码里i全部加2,避免负数。
用滚动数组优化。
重排水果
【贪心 + 构造】先把两个数组中都有的数去掉,每个剩余数字出现次数必须为偶数,可用哈希表统计。设处理后的剩余数组为a和b,贪心:如果要交换a中最小的数,找一个b中最大的数是最合适的,对于b中最小的数也同理。那么把a升序排序、b降序排序,两两匹配。还有一种情况,basket1和basket2中最小值mn当中介,对于a[i]和b[i]的交换,分别和mn交换一次,每次交换代价为min(a[i], b[i], 2×mn),累加代价就是答案。sort换成快速选择能达到O(n)。
X 关闭
X 关闭