当前位置: 首页 > article >正文

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
哎。。。


http://www.kler.cn/a/429742.html

相关文章:

  • JSON.stringify(res,null,2)的含义
  • spring mvc源码学习笔记之十一
  • linux的大内核锁与顺序锁
  • 网络原理(三)—— 传输层 之 UDP 和 TCP协议
  • 力扣经典练习题之70.爬楼梯
  • 【文件锁】多进程线程安全访问文件demo
  • 常见面试题之设计模式
  • 《三角洲行动》游戏安全组件运行时发生异常1-0-0,是什么原因?以及要如何解决?
  • GPS北斗卫星授时服务器功能是什么?应用是什么?
  • 贪心算法part02
  • 力扣-图论-7【算法学习day.57】
  • RK3568平台开发系列讲解(pinctrl 子系统篇)pinctrl_debug
  • create-react-app react19 搭建项目报错
  • linux目录权限
  • 计算机网络常考简答题(1)
  • 【力扣】824.山羊拉丁文
  • 常用环境部署(二十四)——Docker部署开源物联网平台Thingsboard
  • 力扣每日一题 - 1812. 判断国际象棋棋盘中一个格子的颜色
  • 算法(三)——贪心算法
  • java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigur
  • 双色Hanoi塔问题(hanoi)
  • OpenAI 推出满血版 o1和 ChatGPT Pro,AI 竞争再掀高潮
  • Redis性能优化18招
  • 鸿蒙Next学习-监听指定页面显示/页面生命周期
  • OpenGL给矩形贴上纹理
  • 解决vscode 通过GoInstallUpdate Tools命令安装失败的问题