欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > leetcode每日一题51

leetcode每日一题51

2025/2/25 16:22:37 来源:https://blog.csdn.net/weixin_40530554/article/details/144357665  浏览:    关键词:leetcode每日一题51

话说最近工作也步入正轨了
稍微。。。也适应了工作的节奏。。。
希望能让自己的个人简历好看一点吧
有时候很悲观,觉得自己现在的岗位不太行,虽然需要编程能力,但是如果跳槽,可能变成数据分析的类型了。。。
不知道未来如何,先用知识武装自己吧。。。

152.乘积最大子数组

这是一道动态规划
dp[i] = dp[i-1] * ai
= ai
要么等于上一位的最大乘积与当前位相乘,要么等于当前位
但这样忽略了负负得正乘积
因此,要同时维护两个dp数组,一个是最大乘积,一个是最小乘积
dp[i]min = dp[i-1]min * ai
= dp[i-1]max * ai
= ai
dp[i]max = dp[i-1]min * ai
= dp[i-1]max * ai
= ai
这里官方题解里有一句

vector <long> maxF(nums.begin(),nums.end())

这段代码是 C++ 中使用 std::vector 的一种初始化方式。具体来说,它的语法使用了 范围构造函数 来初始化两个 std::vector 对象 maxF 和 minF,并将 nums 中的所有元素拷贝到它们中

return *max_element(maxF.begin(), maxF.end());

这段代码使用了 C++ 的标准库函数 std::max_element,返回的是 maxF 容器中的最大元素。

太久没写cpp了呃啊

class Solution {
public:int maxProduct(vector<int>& nums) {vector<long> dpmax(nums.begin(),nums.end()),dpmin(nums.begin(),nums.end());for(int i=1;i<nums.size();i++){dpmax[i] = max(dpmax[i-1] * nums[i],max(dpmin[i-1]*nums[i],(long)nums[i]));dpmin[i] = min(dpmin[i-1] * nums[i],min(dpmax[i-1]*nums[i],(long)nums[i]));}return *max_element(dpmax.begin(),dpmax.end());}
};

以后可能还会做一下python和java
哎。。。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com