中级农民
- 积分
- 103
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2019-4-9
- 最后登录
- 1970-1-1
|
第一题,用map存下某个value最小的sum,O(n)搞定。
- static int getMaxSum(int[] data) {
- int sum = 0;
- int ans = Integer.MIN_VALUE;
- Map<Integer/*value*/, Integer/*pre sum*/> valueMap = new HashMap<>();
- for (int value : data) {
- sum += value;
- if (valueMap.containsKey(value)) {
- int preSum = valueMap.get(value);
- ans = Math.max(ans, sum - preSum);
- valueMap.put(value, Math.min(preSum, sum - value));
- }
- else {
- valueMap.put(value, sum - value);
- }
- }
- return ans;
- }
复制代码 |
|