一元网络论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 319|回复: 0

日日攻克LeetCode:计算机编程每日挑战实践

[复制链接]

2万

主题

2万

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
84695
发表于 2024-7-8 20:34:41 | 显示全部楼层 |阅读模式
从今天开始,在LeetCode上进行每日一题的训练,并期待来自坛友的监督与交流。今日的题目如下:

713. 乘积小于 K 的子数组
给定一个整数数组 `nums` 和一个整数 `k`,请计算乘积小于 `k` 的连续子数组的个数。

示例 1:

[ol]
  • 输入: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 的子数组。
    [/ol]

    示例 2:

    [ol]
  • 输入:nums = [1,2,3], k = 0
  • 输出:0
    [/ol]

    下面是代码实现:
    ```go
    func numSubarrayProductLessThanK(nums []int, k int) int {
        front := 0
        back := 0
        sum := 1
        result := 0
       
        // 初始化变量
        p := 1
        j := 0
       
        // 外层循环处理所有子数组
        for front = k {
                // 减少当前窗口长度
                p /= nums[j]
                j++
            }
            
            // 更新结果
            res += i - j + 1
        }
       
        return res
    }
    ```
    通过这个改进版本的代码,我们可以快速地解决这个问题。希望这个回答对你有所帮助!
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|一元网络论坛

    GMT+8, 2024-11-8 09:35 , Processed in 0.070152 second(s), 19 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表