给你一个下标从 0 开始的二进制数组 nums ,数组长度为 n 。nums 可以按下标 i( 0 <= i <= n )拆分成两个数组(可能为空):numsleft 和 numsright 。

numsleft 包含 nums 中从下标 0 到 i - 1 的所有元素(包括 0 和 i - 1 ),而 numsright 包含 nums 中从下标 i 到 n - 1 的所有元素(包括 i 和 n - 1 )。
如果 i == 0 ,numsleft 为 空 ,而 numsright 将包含 nums 中的所有元素。
如果 i == n ,numsleft 将包含 nums 中的所有元素,而 numsright 为 空 。
下标 i 的 分组得分 为 numsleft 中 0 的个数和 numsright 中 1 的个数之 和 。

返回 分组得分 最高 的 所有不同下标 。你可以按 任意顺序 返回答案。

示例 1:

输入:nums = [0,0,1,0]
输出:[2,4]
解释:按下标分组
- 0 :numsleft 为 [] 。numsright 为 [0,0,1,0] 。得分为 0 + 1 = 1 。
- 1 :numsleft 为 [0] 。numsright 为 [0,1,0] 。得分为 1 + 1 = 2 。
- 2 :numsleft 为 [0,0] 。numsright 为 [1,0] 。得分为 2 + 1 = 3 。
- 3 :numsleft 为 [0,0,1] 。numsright 为 [0] 。得分为 2 + 0 = 2 。
- 4 :numsleft 为 [0,0,1,0] 。numsright 为 [] 。得分为 3 + 0 = 3 。
下标 2 和 4 都可以得到最高的分组得分 3 。
注意,答案 [4,2] 也被视为正确答案。
示例 2:

输入:nums = [0,0,0]
输出:[3]
解释:按下标分组
- 0 :numsleft 为 [] 。numsright 为 [0,0,0] 。得分为 0 + 0 = 0 。
- 1 :numsleft 为 [0] 。numsright 为 [0,0] 。得分为 1 + 0 = 1 。
- 2 :numsleft 为 [0,0] 。numsright 为 [0] 。得分为 2 + 0 = 2 。
- 3 :numsleft 为 [0,0,0] 。numsright 为 [] 。得分为 3 + 0 = 3 。
只有下标 3 可以得到最高的分组得分 3 。
示例 3:

输入:nums = [1,1]
输出:[0]
解释:按下标分组
- 0 :numsleft 为 [] 。numsright 为 [1,1] 。得分为 0 + 2 = 2 。
- 1 :numsleft 为 [1] 。numsright 为 [1] 。得分为 0 + 1 = 1 。
- 2 :numsleft 为 [1,1] 。numsright 为 [] 。得分为 0 + 0 = 0 。
只有下标 0 可以得到最高的分组得分 2 。

提示:

n == nums.length
1 <= n <= 105
nums[i] 为 0 或 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/all-divisions-with-the-highest-score-of-a-binary-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

eg:nums=[0,0,1,0],zero=[0,1,2,2,3],one=[1,1,1,0,0],分别统计0+1,1+1,2+1,2+1,3+0的最大值,最后得出maxScore=3
 然后再根据zero[i]+one[i]=maxScore选出对应的下标i加入res,最后返回res

class Solution {public List<Integer> maxScoreIndices(int[] nums) {int len = nums.length;List<Integer> res = new ArrayList<>();int[] zero = new int[len + 1];int[] one = new int[len + 1];for(int i = 1; i <= len; i++) {zero[i] = nums[i - 1] == 0 ? zero[i - 1] + 1 : zero[i - 1];}for(int i = len - 1; i >= 0; i--) {one[i] = nums[i] == 1 ? one[i + 1] + 1 : one[i + 1];}int maxScore = 0;for(int i = 0; i <= len; i++) {int Score = zero[i] + one[i];maxScore = Math.max(maxScore, Score);}for(int i = 0; i <= len; i++) {if(zero[i] + one[i] == maxScore) {res.add(i);}}return res;}
}

Day30——分组得分最高的所有下标相关推荐

  1. LeetCode 2155. 分组得分最高的所有下标(前缀和)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二进制数组 nums ,数组长度为 n . nums 可以按下标 i( 0 <= i <= n )拆分成两个数组(可 ...

  2. 2022-1-30 Leetcode 5981.分组得分最高的所有下标

    前两版的方法都超时了, 第三版方法的核心是:最初的得分为整个数组的和,在从左向右的扫描的过程中,如果遇到 0 就加一分(说明右边的 1 的个数之和没有变,左边因为多了一个 0 而加上一分),如果遇到 ...

  3. Leetcode周赛复盘——第 278 场力扣周赛

    5993. 将找到的值乘以 2 我的做法是将数组从小到大排序之后,再将找到的值乘以2: class Solution:def findFinalValue(self, nums: List[int], ...

  4. 【Leetcode】第 278 场周赛

    前言 第 278 场周赛是Leetcode上2021年最后一场周赛,也是我第一次参加的周赛,第一道题秒了,然后可能是自己肚子疼吧,第二题写完一直有bug,死活找不出来,一直被卡住.直到比赛结束后,吃完 ...

  5. 强大的分组SectionListView, 支持自定义组头布局和分组的内容布局, 组头有挤压效果

    效果与系统的联系人分组效果类似,组头有挤压效果.但是不同的是,SectionListView支持每组的组头布局自定义,每组的内容布局也可以自定义. 效果图如下: 自定义Adapter: package ...

  6. 数据挖掘与分析——关联规则模型

    一.预处理 1.打开csv打分表,并指出数据存在的问题,给出相应的解决方案: 打分表中,前五行数据为空白或不在统计范围内的数据,第六行数据为列名,因此需要从第七行开始进行存储.在列名中,存在许多同学所 ...

  7. 数据库系统原理(BNU_党德鹏_慕课)超详细听课笔记

    数据库系统原理 笔记 第一章 绪论 第一节 数据库 第二节 数据库管理系统 第三节 数据管理技术发展趋势 第二章 关系模型 第一节 关系结构和约束 第二节 基本关系代数运算 第三节 附加关系代数运算 ...

  8. 数据结构(C语言版) 第 八 章 排序 知识梳理 + 习题详解

    目录 一.归并排序 二.交换排序 1.快速排序 2.冒泡排序 三.插入排序 1.直接插入排序(基于顺序查找) 2.折半插入排序(基于折半查找) 3.希尔排序(基于逐趟缩小增量) 四.选择排序 0.直接 ...

  9. 八大排序算法合集 (归并排序、交换排序、插入排序、选择排序......)

    目录 一.归并排序 二.交换排序 1.快速排序 2.冒泡排序 三.插入排序 1.直接插入排序(基于顺序查找) 2.折半插入排序(基于折半查找) 3.希尔排序(基于逐趟缩小增量) 四.选择排序 0.直接 ...

最新文章

  1. shiro 文档_spring---Shiro拦截器
  2. 腾讯正式加入OCP阵营,拥抱全球开源生态圈
  3. javascript学习系列(23):数组中的解构方法
  4. php 显示对像编码,PHP面向对象之旅:类型提示
  5. html动态网站维护页面
  6. 200 元人民币面世!
  7. Lomboz 3.3
  8. 【译】2021年十大热门编程语言
  9. Python画图源码|玫瑰花|皮卡丘|小猪佩奇|哆啦A梦|大白|小猫
  10. 在博客右下角设置透明卡通小美女,附上源码
  11. 后网盘时代:百度问鼎、阿里紧追、360们跟进
  12. 关于谷歌插件开发的了解
  13. 一种TV端自动化测试应用OTA升级的方法
  14. Go语言与Java语言对比
  15. 百兆网线和千兆网线做法的区别
  16. Invalid byte tag in constant pool: 18
  17. 《编程之美》之摞烙饼的排序问题
  18. MATLAB程序设计与应用刘卫国(第三版)课后实验答案——3
  19. 江民在线杀毒充值的痛苦经历
  20. JAVA之IOC控制原理

热门文章

  1. mybatis源码分析5 - mapper读写数据库完全解析
  2. 容器数据卷的应用之MySQL
  3. 边缘检测之LOG算子
  4. 【深度之眼吴恩达机器学习第四期】笔记(三)
  5. SHA算法描述及实现
  6. 【OpenGl】OpenGL之弧度和角度的换算
  7. 【python】牛客竞赛语法入门班顺序结构习题 python解法
  8. 学习成为一个演讲者(资源)
  9. Mac系统快捷键一览
  10. 用于主题检测的临时日志(9fcb0391-54d0-4f35-9170-e53887f47814 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...