首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

图解「小于 K 的两数之和 」

者 | P.yh 来源 | 五分钟学算法 题目描述 题目来源于 LeetCode 上第 1099 号问题:小于 K 的两数之和。...给你一个整数数组 A 和一个整数 K,请在该数组中找出两个元素,使它们的和小于 K 但尽可能地接近 K,返回这两个元素的和。 如不存在这样的两个元素,请返回 -1。...示例 1: 输入:A = [34,23,1,24,75,33,54,8], K = 60 输出:58 解释: 34 和 24 相加得到 58,58 小于 60,满足题意。...示例 2: 输入:A = [10,20,30], K = 15 输出:-1 解释: 我们无法找到和小于 15 的两个元素。...那么就需要考虑如何使用排序加双指针的方法来解决这个问题,这里,题目是要求小于 target 的数量,我们还是按照之前的分析思路来分析。

1K20

滑动窗口之乘积小于k的子数组

乘积小于k的子数组 给定一个正整数数组 nums和整数 k 。 请找出该数组内乘积小于 k 的连续的子数组的个数。...这种解法同样是 刚开始左右指针指在同一个地方,然后由于乘积小于k,r可以向右移动,乘积继续变化,直到乘积大于等于k,我们就需要进行一些操作了。...我们可以想一想,只要r小于n,那当r每次增加1的时候,我们就可以计算ans,将ans+r-l+1,诶,为什么是r-l+1呢?...因为当l不变、r向右移动时,我们的乘积一直都是非递减的,如果当前右指针移动到的位置使得l到r不满足乘积小于k,那我们再继续移动右指针,乘积一定依旧不满足小于k,那就说明这个l我们已经“利用”完了,l可以退出滑动窗口了...~ 所以l的改变就取决于乘积除以要移除的nums[l]的结果,直到这个结果小于k时,l就不需要再变化了 这个时候我们就能求取当前的l到r对应的ans值了(因为已经满足乘积小于k这个条件了) /** *

70010
领券