大同市住房城乡建设网站,长沙做优化的公司,抖音代运营找客户话术,wordpress支付宝免插件坚持按题型打卡刷梳理力扣算法题系列#xff0c;语言为go#xff0c;Day6 乘积小于K的子数组
题目描述解题思路 双指针移动#xff0c;遍历右端点right#xff0c;滑动左端点left子数组的个数#xff1a;固定右端点r#xff0c;子数组的个数其实就是从l到r的元… 坚持按题型打卡刷梳理力扣算法题系列语言为goDay6 乘积小于K的子数组
题目描述解题思路 双指针移动遍历右端点right滑动左端点left子数组的个数固定右端点r子数组的个数其实就是从l到r的元素的个数即r-l1反向控制条件for sum k{}当sumk即满足操作时执行ans right-left 1 代码参考
func numSubarrayProductLessThanK(nums []int, k int) int {left : 0sum : 1ans : 0if k 1 {return 0}for right,value :range nums{sum * valuefor sum k{sum / nums[left]left}ans right-left 1}return ans
}tips 双指针的应用场景指针移动的过程中sum和是在不断变小的while条件逐渐从满足要求变为不满足要求这就是单调性只有满足单调性才可以使用双指针子数组的个数固定右端点r子数组的个数其实就是从l到r的元素的个数即r-l1即[l,r]满足要求的话[l,r],[l1,r]…[r,r]都是满足要求的固定右端点