• Leetcode 713 Subarray Product Less Than K (子数组乘积大于K的个数) (双指针)


    Leetcode 713

    问题描述

    Your are given an array of positive integers nums.
    
    Count and print the number of (contiguous) subarrays where the product of all the elements in the subarray is less than k.
    

    例子

    Example 1:
    Input: nums = [10, 5, 2, 6], k = 100
    Output: 8
    Explanation: The 8 subarrays that have product less than 100 are: [10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6].
    Note that [10, 5, 2] is not included as the product of 100 is not strictly less than k.
    

    方法

    ** Solution Java **
    ** 7ms, beats 98.53% **
    ** 49.5MB, beats 100.00% **
    class Solution {
        public int numSubarrayProductLessThanK(int[] nums, int k) {
            if (k == 0)
                return 0;
            int product = 1, res = 0, n = nums.length;
            for (int left = 0, right = 0; right < n; ++right){
                product *= nums[right];
                while (left <= right && product >= k) 
                    product /= nums[left++];
                res += right - left + 1;
            }
            return res;
        }
    }
    
    ** Solution Python3 **
    ** 1060ms, beats 36.99% **
    ** 16.7MB, beats 14.29% **
    class Solution(object):
        def numSubarrayProductLessThanK(self, nums, k):
            if (k == 0) :
                return 0
            product, res, left = 1, 0, 0
            for right in range(len(nums)) :
                product *= nums[right]
                while (left <= right and k <= product) :
                    product /= nums[left]
                    left += 1
                res += right - left + 1
            return res
    
  • 相关阅读:
    matlab练习程序(灰度图直方图均衡化)
    二叉查找树
    hadoop入门介绍
    配置虚拟机Ubuntu网络连接
    hadoop ubuntu (单节点)部署
    Thrift
    linux打包压缩命令汇总
    [转载]ubuntu 启动流程
    linux命令大全
    Linux文件查找命令find,xargs详述
  • 原文地址:https://www.cnblogs.com/willwuss/p/12590981.html
Copyright © 2020-2023  润新知