2023-3-12 刷题情况
创始人
2024-06-03 03:53:03
0

重排数组以得到最大前缀分数

题目描述

给你一个下标从 0 开始的整数数组 nums 。你可以将 nums 中的元素按 任意顺序 重排(包括给定顺序)。

令 prefix 为一个数组,它包含了 nums 重新排列后的前缀和。换句话说,prefix[i] 是 nums 重新排列后下标从 0 到 i 的元素之和。nums 的 分数 是 prefix 数组中正整数的个数。

返回可以得到的最大分数。

样例

样例输入

nums = [2,-1,0,1,-3,3,-3]
nums = [-2,-3,0]

样例输出

6 数组重排为 nums = [2,3,1,-1,-3,0,-3] 。
prefix = [2,5,6,5,2,2,-1] ,分数为 6 。
可以证明 6 是能够得到的最大分数。

0
解释:不管怎么重排数组得到的分数都是 0 。

提示

  • 1<=nums.length<=1051 <= nums.length <= 10^51<=nums.length<=105
  • −106<=nums[i]<=106-106 <= nums[i] <= 10^6−106<=nums[i]<=106

思路

按照贪心的想法,直接排序,然后从从大到小直接累计,当前综合为正数,累加即可。

代码实现

class Solution {public int maxScore(int[] nums) {Arrays.sort(nums);int ans = 0;long sum = 0;for(int i = nums.length - 1; i >= 0; i--){sum += nums[i];if(sum > 0) ans++;}return ans;}
}

统计美丽子数组数目

题目描述

给你一个下标从 0 开始的整数数组nums 。每次操作中,你可以:

选择两个满足 0 <= i, j < nums.length 的不同下标 i 和 j 。
选择一个非负整数 k ,满足 nums[i] 和 nums[j] 在二进制下的第 k 位(下标编号从 0 开始)是 1 。
将 nums[i] 和 nums[j] 都减去 2k 。
如果一个子数组内执行上述操作若干次后,该子数组可以变成一个全为 0 的数组,那么我们称它是一个 美丽 的子数组。

请你返回数组 nums 中 美丽子数组 的数目。

子数组是一个数组中一段连续 非空 的元素序列。

样例

样例输入

nums = [4,3,1,2,4]
nums = [1,10,4]

样例输出

2
0

提示

  • 1<=nums.length<=1051 <= nums.length <= 10^51<=nums.length<=105
  • 0<=nums[i]<=1060 <= nums[i] <= 10^60<=nums[i]<=106

思路

异或前缀和+哈希表。

代码实现

class Solution {public long beautifulSubarrays(int[] nums) {HashMap map = new HashMap<>();map.put(0, 1);long ans = 0;int sum = 0;for(var n : nums){sum ^= n;if(map.containsKey(sum)) ans += map.get(sum);map.put(sum, map.getOrDefault(sum, 0) + 1);}return ans;}
}

相关内容

热门资讯

中证A500ETF摩根(560... 8月22日,截止午间收盘,中证A500ETF摩根(560530)涨1.19%,报1.106元,成交额...
A500ETF易方达(1593... 8月22日,截止午间收盘,A500ETF易方达(159361)涨1.28%,报1.104元,成交额1...
何小鹏斥资约2.5亿港元增持小... 每经记者|孙磊    每经编辑|裴健如 8月21日晚间,小鹏汽车发布公告称,公司联...
中证500ETF基金(1593... 8月22日,截止午间收盘,中证500ETF基金(159337)涨0.94%,报1.509元,成交额2...
中证A500ETF华安(159... 8月22日,截止午间收盘,中证A500ETF华安(159359)涨1.15%,报1.139元,成交额...
科创AIETF(588790)... 8月22日,截止午间收盘,科创AIETF(588790)涨4.83%,报0.760元,成交额6.98...
创业板50ETF嘉实(1593... 8月22日,截止午间收盘,创业板50ETF嘉实(159373)涨2.61%,报1.296元,成交额1...
港股异动丨航空股大幅走低 中国... 港股航空股大幅下跌,其中,中国国航跌近7%表现最弱,中国东方航空跌近5%,中国南方航空跌超3%,美兰...
电网设备ETF(159326)... 8月22日,截止午间收盘,电网设备ETF(159326)跌0.25%,报1.198元,成交额409....
红利ETF国企(530880)... 8月22日,截止午间收盘,红利ETF国企(530880)跌0.67%,报1.034元,成交额29.0...