
获得徽章 16
#刷题交流#
打卡第二十六天:[拼凑单词chi]
首先,需要统计字符串中各个字符的数量。目标是找出字符 'c'、'h' 和 'i' 各自的出现次数。遍历字符串 text,统计字符 'c'、'h' 和 'i' 的数量。其他字符对结果没有影响,可以忽略。拼凑 "chi" 的数量由这三个字母中最少的那个字符的数量决定。比如,如果 'c' 出现 3 次,'h' 出现 2 次,'i' 出现 4 次,那么最多可以拼出 2 个 "chi",因为 'h' 最少,只能拼凑 2 个。最后,我们返回字符 'c'、'h' 和 'i' 数量中的最小值,这就是我们可以拼出 "chi" 单词的最大次数。
打卡第二十六天:[拼凑单词chi]
首先,需要统计字符串中各个字符的数量。目标是找出字符 'c'、'h' 和 'i' 各自的出现次数。遍历字符串 text,统计字符 'c'、'h' 和 'i' 的数量。其他字符对结果没有影响,可以忽略。拼凑 "chi" 的数量由这三个字母中最少的那个字符的数量决定。比如,如果 'c' 出现 3 次,'h' 出现 2 次,'i' 出现 4 次,那么最多可以拼出 2 个 "chi",因为 'h' 最少,只能拼凑 2 个。最后,我们返回字符 'c'、'h' 和 'i' 数量中的最小值,这就是我们可以拼出 "chi" 单词的最大次数。
展开
评论
点赞
#刷题交流# 打卡第二十一天:[最大乘积区间]
我们需要维护两个动态规划数组,dp_max[i]:表示以 arr[i] 结尾的子数组的最大乘积。
dp_min[i]:表示以 arr[i] 结尾的子数组的最小乘积。对于 arr[i],它可以与前一个元素的乘积继续相乘,形成一个新的最大值或最小值。因此我们要考虑以下三种情况:
arr[i] 自身就是一个新的子数组。
dp_max[i-1] * arr[i],即之前的最大乘积乘上当前元素。
dp_min[i-1] * arr[i],即之前的最小乘积乘上当前元素。
通过动态更新这些状态,我们可以在 O(n) 时间内求解出最大乘积区间。
我们需要维护两个动态规划数组,dp_max[i]:表示以 arr[i] 结尾的子数组的最大乘积。
dp_min[i]:表示以 arr[i] 结尾的子数组的最小乘积。对于 arr[i],它可以与前一个元素的乘积继续相乘,形成一个新的最大值或最小值。因此我们要考虑以下三种情况:
arr[i] 自身就是一个新的子数组。
dp_max[i-1] * arr[i],即之前的最大乘积乘上当前元素。
dp_min[i-1] * arr[i],即之前的最小乘积乘上当前元素。
通过动态更新这些状态,我们可以在 O(n) 时间内求解出最大乘积区间。
展开
评论
点赞