T1.连续天数的最高利润额(100分) - 华为机试真题题解

考试平台: 时习知

分值: 100分(第一题)

考试时间: 两小时(共3题)

alt

题目描述

公司每日盈利的利润额记于整数数组 profit,请返回连续一或多天利润额总和的最高值。

输入

第一行为一个整数,表示天数

第二行为整数列表,分别为每日的利润。

输出

输出整数,表示连续天数利润额总和的最高值。

示例1

输入:
4
2 3 -5 4

输出:
5

解释: 
"2 3”连续2天的利润总额总和为最高值,连续利润额为5。

示例2

输入:
5
7 5 -7 8 -1

输出:
13

解释: 
“7 5 -7 8”连续4天的利润总额总和为最高值,连续利润额为13。

题解

这个代码使用了动态规划的思想来解决问题。

它的解题思路是计算出利润数组的前缀和数组,然后通过比较当前元素与之前最小的前缀和的差值来更新最大利润。

  • 时间复杂度:该算法只需要遍历一次利润数组,因此时间复杂度为 O(n),其中 n 是利润数组的长度。
  • 空间复杂度:需要额外 O(n) 的空间来存储前缀和数组和其他变量,因此空间复杂度也为 O(n)。

C++

#include <bits/stdc++.h>

using namespace std;

int maxProfit(vector<int>& profit)
{
 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

🔥笔试编程真题宝典💯 文章被收录于专栏

📕分享大厂机试真题深度剖析核心考点,助你速通面试。

全部评论

相关推荐

3 5 评论
分享
牛客网
牛客企业服务