当前位置:网站首页>LeetCode 1186. Delete once to get the sub array maximum and daily question
LeetCode 1186. Delete once to get the sub array maximum and daily question
2022-07-07 16:59:00 【@Little safflower】
Problem description
Give you an array of integers , Return one of its Non empty Subarray ( Continuous element ) After performing an optional delete operation , The maximum sum of elements that can be obtained . let me put it another way , You can choose a sub array from the original array , And you can decide whether to delete an element from it ( It can only be deleted once ),( After deleting ) There should be at least one element in the subarray , Then the subarray ( be left over ) The sum of the elements of is the largest of all subarrays .
Be careful , After deleting an element , Subarray Can't be empty .
Example 1:
Input :arr = [1,-2,0,3]
Output :4
explain : We can choose [1, -2, 0, 3], And then delete -2, In this way, I get [1, 0, 3], And the biggest .
Example 2:Input :arr = [1,-2,-2,3]
Output :3
explain : Let's just pick [3], This is the maximum sum .
Example 3:Input :arr = [-1,-1,-1,-1]
Output :-1
explain : The resulting subarray cannot be empty , So we can't choose [-1] And delete -1 To get 0.
We should choose directly [-1], Or choose [-1, -1] Then delete one from it -1.
Tips :
1 <= arr.length <= 105
-104 <= arr[i] <= 104source : Power button (LeetCode)
link :https://leetcode.cn/problems/maximum-subarray-sum-with-one-deletion
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .
Java
class Solution {
public int maximumSum(int[] arr) {
int len = arr.length;
int remain = arr[0];
int delete = 0;
int ans = remain;
for(int i = 1;i < len;i++){
int n = arr[i];
if(n >= 0){
remain = Math.max(0,remain) + n;
delete = delete + n;
}else {
// Delete this time , Or delete the previous element
delete = Math.max(remain,delete + n);
remain = Math.max(0,remain) + n;
}
ans = Math.max(ans,remain);
ans = Math.max(ans,delete);
}
return ans;
}
}
边栏推荐
猜你喜欢
字节跳动高工面试,轻松入门flutter
最新2022年Android大厂面试经验,安卓View+Handler+Binder
Three. JS series (1): API structure diagram-1
The process of creating custom controls in QT to encapsulating them into toolbars (II): encapsulating custom controls into toolbars
两类更新丢失及解决办法
[Android -- data storage] use SQLite to store data
浅浅理解.net core的路由
如何选择合适的自动化测试工具?
Talk about the realization of authority control and transaction record function of SAP system
全网“追杀”钟薛高
随机推荐
两类更新丢失及解决办法
Personal notes of graphics (1)
LocalStorage和SessionStorage
dapp丨defi丨nft丨lp单双币流动性挖矿系统开发详细说明及源码
LeetCode 1981. 最小化目标值与所选元素的差 每日一题
DNS 系列(一):为什么更新了 DNS 记录不生效?
Tidb cannot start after modifying the configuration file
QML beginner
面向接口编程
LeetCode 1696. 跳跃游戏 VI 每日一题
AutoLISP series (1): function function 1
深度监听 数组深度监听 watch
23. 合并K个升序链表-c语言
DAPP defi NFT LP single and dual currency liquidity mining system development details and source code
logback. XML configure logs of different levels and set color output
在哪个期货公司开期货户最安全?
Master this set of refined Android advanced interview questions analysis, oppoandroid interview questions
Cesium(3):ThirdParty/zip. js
ATM system
QT中自定义控件的创建到封装到工具栏过程(二):自定义控件封装到工具栏