首页 > 其他 > 详细

【Leetcode方法比较】DP/滑窗/前缀和

时间:2021-04-18 14:36:56      阅读:11      评论:0      收藏:0      [点我收藏+]

一、解决问题:连续子数组问题

二、适用原则:

  1.滑窗:适合连续和/积问题,不适合有负值的问题,因为不知窗口往哪滑

  2.前缀和/积:不适合数值过大的问题,因为前缀和/积数字可能超出数字表示范围

  3.DP:适合子数组最大/最小问题,不适合和为k问题,因为要记录上一步的和/积,来更新当前步的和/积,但当前和/积难以确定来自前一步还是自身

三、实例:

  1.【Leetcode-152】乘积最大子数组-适合DP,因为有负数且乘积可能超出范围

  给你一个包含负数的整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

  2.【Leetcode-560】和为K的子数组-适合前缀和,因为有负数且要求和为k

  给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。

  数组的长度为 [1, 20,000]。

  数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。

  3.【Leetcode-713】乘积小于K的子数组-适合滑窗,因为乘积可能超出范围且要求和为k

  给定一个正整数数组 nums

  找出该数组内乘积小于 k 的连续的子数组的个数。

  0 < nums.length <= 50000,0 < nums[i] < 1000,0 <= k < 10^6

【Leetcode方法比较】DP/滑窗/前缀和

原文:https://www.cnblogs.com/EstherLjy/p/14673072.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!