Leetcode--713. 乘积小于k的子数组
给定一个正整数数组 nums。
找出该数组内乘积小于 k 的连续的子数组的个数。
示例 1:
输入: nums = [10,5,2,6], k = 100
输出: 8
解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。
需要注意的是 [10,5,2] 并不是乘积小于100的子数组。
说明:
0 < nums.length <= 50000
0 < nums[i] < 1000
0 <= k < 10^6
思路:双指针法
left与right,right一直向后遍历,如果乘积大于k,则左指针向右移动,同时乘积ans/nums[left],
而如果左指针移动之后,此刻乘积小于100了,以nums[left]为起始位置满足条件的为right-left
例如:[2,3,4,5,10,20] k=100
2*3*4*5大于100了,现在向右移,3*4*5,小于100,所以[3],[3,4],[3,4,5]都是满足条件的结果
提交的代码:
class Solution {
public int numSubarrayProductLessThanK(int[] nums, int k) {
if (k <= 1) return 0;
int t = 1, ans = 0, left = 0;
for (int right = 0; right < nums.length; right++) {
t *= nums[right];
while (t >= k) t /= nums[left++];
ans += right - left + 1;
}
return ans;
}
}
完整的代码:
public class Solution713 {
public static int numSubarrayProductLessThanK(int[] nums, int k) {
if (k <= 1) return 0;
int t = 1, ans = 0, left = 0;
for (int right = 0; right < nums.length; right++) {
t *= nums[right];
while (t >= k) t /= nums[left++];
ans += right - left + 1;
}
return ans;
}
public static void main(String[] args)
{
int[] nums = {10,5,2,6};
int k = 100;
System.out.println(numSubarrayProductLessThanK(nums,k));
}
}
Leetcode--713. 乘积小于k的子数组相关推荐
- LeetCode 713. 乘积小于 K 的子数组
713. 乘积小于 K 的子数组 [双指针]s表示前j到i的数字的乘积,当发现乘积大于等于k的时候,就把j向右移动,并且把s除掉个nums[j],这样得到的就是以i结尾的符合要求的数组的最大长度,比这 ...
- LeetCode 713 乘积小于K的子数组
写在前面 一道很艺术的编程题~做学习记录 题目描述 给定一个正整数数组 nums和整数 k . 请找出该数组内乘积小于 k 的连续的子数组的个数. 示例 示例1: 输入: nums = [10,5,2 ...
- ⭐算法入门⭐《双指针》中等04 —— LeetCode 713. 乘积小于K的子数组
- LeetCode 937. 重新排列日志文件 / 1823. 找出游戏的获胜者(约瑟夫环问题) / 713. 乘积小于 K 的子数组
937. 重新排列日志文件 2022.5.3 每日一题 题目描述 给你一个日志数组 logs.每条日志都是以空格分隔的字串,其第一个字为字母与数字混合的 标识符 . 有两种不同类型的日志: 字母日志: ...
- 0505|713. 乘积小于 K 的子数组
0505|713. 乘积小于 K 的子数组 mid 滑动窗口. 求连续子树组的个数,"连续子树组"很强的暗示---使用滑动窗口. 本题只需记录 以每个数字为右边界所形成的有效子数组 ...
- 力扣 713. 乘积小于K的子数组
题目 给定一个正整数数组 nums和整数 k . 请找出该数组内乘积小于 k 的连续的子数组的个数. 示例 输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8个乘积小 ...
- 713. 乘积小于 K 的子数组
给定一个正整数数组 nums和整数 k . 请找出该数组内乘积小于 k 的连续的子数组的个数. 示例 1: 输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8个乘积小 ...
- 【713. 乘积小于 K 的子数组】
leetcode力扣刷题打卡 题目:1. 两数之和 描述:给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目. 解题思路 1.双指针: 2.左 ...
- LeetCode 713、乘积小于 K 的子数组
713.乘积小于 K 的子数组 1)题目描述 给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目. 示例 1: 输入:nums = [10,5 ...
- LeetCode713. 乘积小于K的子数组
LeetCode713. 乘积小于K的子数组 1. 问题描述 2. 思路 经典双指针问题 3. 代码 func numSubarrayProductLessThanK(nums []int, k in ...
最新文章
- String 比较的部分理解(1)
- python爬虫能做什么项目-python爬虫实例项目大全
- ES6--基础语法(一)
- 2018年第九届蓝桥杯C/C++ A组国赛 —— 第二题:阅兵方阵
- 鲁迅散文——随感录四十九
- 事务保存点savepoint
- 【AI视野·今日CV 计算机视觉论文速览 第218期】Fri, 11 Jun 2021
- ecshop_商品描述远程图片自动本地化插件
- [转载] python打包程序在win10不能运行、点击无反应_Windows10平台用PyInstaller打成exe程序后不能运行请高手指点...
- 如何使用AdminStudio软件把.exe转换成.msi
- Lucene为不同字段指定不同分词器(转)
- 用adb pull命令从android系统中读取文件失败的原因及解决办法
- banner设圆角_Banner设计技巧!
- 捷配送了10块板子后,决定做一个“小霸王”手柄
- Could not resolve project
- 计算机组成原理 定点加法、减法 练习题
- [转] 汉语骂人最高境界!(爆笑)
- 配置maven的中央仓库mirro镜像
- Opencv---通过形态学操作提取水平和垂直线
- 我参加NVIDIA Sky Hackathon(语音识别模型训练)
热门文章
- LeetCode 1452. 收藏清单(std::includes判断子集)
- LintCode 563. 背包问题 V(DP)
- LeetCode 641. 设计循环双端队列
- 数据中台建设与应用_Gartner对于建设数据中台的建议
- caffe模型文件解析_Caffe ImageData神经网络基本示例无法解析模型文件
- 前端:实现手机左右滑动效果
- MYSQL中有时候不得不使用replace()去掉特殊字符,写在这里备用一下
- 论文浅尝 | 打通推荐系统与知识图谱: 第一个公开的大规模链接数据集合
- 基于PaddleRec的用户点击率预测
- 百度机器阅读理解比赛赛后总结