洗个澡把offer洗没了。。

最近一网友收到一个offer,因为自己在洗澡没有看到,结果过了40分钟hr又把offer给撤回了,关键hr还把他的联系方式给删了,也没办法争取了。

我对这种仅过了40分钟就撤回offer的行为很是不能理解,说明他们也不是真的很缺人,如果真的缺人,也不会在乎那几十分钟,所以不去也挺好。

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第1186题:删除一次得到子数组最大和,难度是中等。

给你一个整数数组,返回它的某个非空子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最大的。

示例1:

输入:arr = [1,-2,0,3]

输出:4

解释:我们可以选出 [1, -2, 0, 3],然后删掉 -2,这样得到 [1, 0, 3],和最大。

示例2:

输入:arr = [1,-2,0,3]

输出:4

解释:我们可以选出 [1, -2, 0, 3],然后删掉 -2,这样得到 [1, 0, 3],和最大。

  • 1 <= arr.length <= 10^5

  • -10^4 <= arr[i] <= 10^4

问题分析

这题说的是从原数组中最多删除一个元素,然后求最大连续子数组的和,实际上这是一道动态规划的问题。

我们定义dp[i][0]表示没有删除任何元素且以arr[i]为结尾的最大连续子数组之和。dp[i][1]表示最多删除一个元素且以arr[i]为结尾的最大连续子数组之和,删除前以arr[i]为结尾的也算。最后保存最大值即可。

很明显我们可以得出:

dp[i][0] = Math.max(dp[i - 1][0], 0) + arr[i];

dp[i][1] = Math.max(dp[i - 1][1] + arr[i], dp[i - 1][0]);

dp[i][0]表示没有删除任何元素,以它结尾的最大连续子数组之和是它自己arr[i]加上它前面的连续子数组之和,如果它前面的连续子数组之和为负数,就不要加了 。

dp[i][1]表示最多删除一个元素,也可能是之前就已经删除过,所以我们取dp[i - 1][1] + arr[i],也可能是之前没有删除过,而是把当前的元素arr[i]给删除了,我们取 dp[i - 1][0],这两种情况我们取最大值即可。

动态规划有了递推公式就简单了,我们在看下Base Case,第一个元素如果没有删除,则dp[0][0] = arr[0];如果删除了,则dp[0][1] = 0。

JAVA:

publicintmaximumSum(int[] arr){    int n = arr.length;    int[][] dp = newint[n][2];    dp[0][0] = arr[0];// 第一个元素没有删除    dp[0][1] = 0;// 第二个元素被删除    int ans = arr[0];// 保存最大值。    for (int i = 1; i < arr.length; i++) {        dp[i][0] = Math.max(dp[i - 1][0], 0) + arr[i];        dp[i][1] = Math.max(dp[i - 1][1] + arr[i], dp[i - 1][0]);        ans = Math.max(ans, Math.max(dp[i][0], dp[i][1]));    }    return ans;}

C++:

public:    intmaximumSum(vector<int> &arr){        int n = arr.size();        vector<vector<int>> dp(n, vector<int>(2, 0));        dp[0][0] = arr[0];// 第一个元素没有删除        dp[0][1] = 0;// 第二个元素被删除        int ans = arr[0];// 保存最大值。        for (int i = 1; i < n; i++) {            dp[i][0] = max(dp[i - 1][0], 0) + arr[i];            dp[i][1] = max(dp[i - 1][1] + arr[i], dp[i - 1][0]);            ans = max(ans, max(dp[i][0], dp[i][1]));        }        return ans;    }

(0)
wd123_cnwd123_cn
上一篇 2025年3月31日 上午9:07
下一篇 2025年3月31日 上午10:26

相关文章

  • 杰米·奥利弗的黄金味噌三文鱼食谱:简单美味又营养

    作为一名注册营养师,我一直在寻找既容易准备、快速完成又美味的食谱。杰米·奥利弗的黄金味噌三文鱼不仅符合这些高标准,还提供了额外的营养价值。 如何制作杰米·奥利弗的黄金味噌三文鱼 食谱的第一步是准备烤架,但由于芝加哥还在下雪,我选择了使用烤箱。在预热烤箱的同时,我准备了芦笋和甜豌豆。洗净并修剪蔬菜后,我用橄榄油拌匀并放在一边。接着,我制作了腌料,包括黑味噌、酱…

    2025年3月12日
  • 梅赛德斯辟谣追求维斯塔潘,重点续约拉塞尔,汉密尔顿享受法拉利新生活

    在澳大利亚大奖赛周末前夕,梅赛德斯车队领队兼CEO托托·沃尔夫公开否认了关于他仍在寻求在2026年签下现任F1世界冠军马克斯·维斯塔潘的传言。梅赛德斯今年拥有全新的车手阵容,新秀安德烈亚·基米·安东内利加入了乔治·拉塞尔的行列,车队希望能够摆脱近年来的低迷状态,他们在过去的三个赛季中只赢得了五场比赛,其中四场是在2024年获得的。 梅赛德斯专注现有车手阵容 …

    2025年3月13日
  • 妻子因朋友未支持丈夫慈善活动感到失望

    近日,一位女性在英国论坛Mumsnet上发帖表达了她对朋友们未支持她丈夫参与的一项慈善活动的失望。她表示,自己已经多次发送了赞助链接,但朋友们无一响应。 事件背景 这位女性提到,她丈夫参与的是一项与运动神经元病(MND)相关的巨大挑战,活动于4月举行。MND是一种影响控制肌肉运动的神经细胞的疾病。她解释说,当地社区中有一位他们熟识的人患有MND,而他们的一些…

    2025年3月10日
  • 韩媒:美国正式确认将韩国列入“敏感国家”名单,预计4月15日起生效

    来源 | 环球网 韩联社等多家韩媒最新消息,美国能源部当地时间3月14日正式确认,美国今年1月已将韩国列入“敏感国家”名单。报道称,美国此举预计将在政治与外交上引发巨大波澜。韩方此前回应称,已基于非正式渠道消息提出交涉。 据悉,一旦被列入该名单,韩美在核能、人工智能等尖端技术领域的交流与合作会受到严格限制。韩联社称,若美方按计划4月15日起开始实施相关举措,…

    2025年3月16日
  • 复古田园风再次来袭:Farmcore家居风潮引领慢生活新时尚

    在快节奏的现代生活中,人们对舒适、温馨的家的渴望愈发强烈。家居潮流也随之不断演变,曾经风靡一时的田园风格,如今以全新的姿态——“Farmcore”再次回归大众视野。Farmcore不仅仅是怀旧,更是对慢生活的向往,是对舒适、温馨、充满人情味的家居环境的追求。 潮流轮回加速:Farmcore应运而生 过去,人们认为时尚潮流的轮回周期大约是20年。但随着社交媒体…

    2025年3月21日
  • 海底捞就上海门店不雅事件致歉并赔偿,两名涉事未成年人已被拘留

    中国知名火锅连锁品牌海底捞近日发布声明,就其上海一家门店发生的“顾客在火锅汤底中排尿”事件向公众致歉,并表示将对超过4000名曾光顾该门店的顾客进行赔偿。 事件回顾 事件起因源于一段在网络上流传的视频。视频显示,两名男子在海底捞上海某门店的包间内用餐时,竟然向火锅汤底中排尿。这一恶劣行为迅速引发舆论哗然,严重影响了海底捞的品牌形象。 海底捞方面表示,该事件发…

    2025年3月13日