【Java|golang】1664. 生成平衡数组的方案数---奇数前缀和 + 偶数前缀和

news2024/9/21 14:51:10

给你一个整数数组 nums 。你需要选择 恰好 一个下标(下标从 0 开始)并删除对应的元素。请注意剩下元素的下标可能会因为删除操作而发生改变。

比方说,如果 nums = [6,1,7,4,1] ,那么:

选择删除下标 1 ,剩下的数组为 nums = [6,7,4,1] 。
选择删除下标 2 ,剩下的数组为 nums = [6,1,4,1] 。
选择删除下标 4 ,剩下的数组为 nums = [6,1,7,4] 。
如果一个数组满足奇数下标元素的和与偶数下标元素的和相等,该数组就是一个 平衡数组 。

请你返回删除操作后,剩下的数组 nums 是 平衡数组 的 方案数 。

示例 1:

输入:nums = [2,1,6,4]
输出:1
解释:
删除下标 0 :[1,6,4] -> 偶数元素下标为:1 + 4 = 5 。奇数元素下标为:6 。不平衡。
删除下标 1 :[2,6,4] -> 偶数元素下标为:2 + 4 = 6 。奇数元素下标为:6 。平衡。
删除下标 2 :[2,1,4] -> 偶数元素下标为:2 + 4 = 6 。奇数元素下标为:1 。不平衡。
删除下标 3 :[2,1,6] -> 偶数元素下标为:2 + 6 = 8 。奇数元素下标为:1 。不平衡。
只有一种让剩余数组成为平衡数组的方案。
示例 2:

输入:nums = [1,1,1]
输出:3
解释:你可以删除任意元素,剩余数组都是平衡数组。
示例 3:

输入:nums = [1,2,3]
输出:0
解释:不管删除哪个元素,剩下数组都不是平衡数组。

提示:

1 <= nums.length <= 105
1 <= nums[i] <= 104

public int waysToMakeFair(int[] nums) {
        int evenSum=0,oddSum=0,res=0;
        for (int i = 0; i < nums.length; i++) {
            if (i%2==0){
                evenSum+=nums[i];
            }else {
                oddSum+=nums[i];
            }
        }
        int preEvenSum=0,preOddSum=0;
        for (int i = 0; i < nums.length; i++) {
            if (i%2==0){
                if (preEvenSum+oddSum-preOddSum==preOddSum+evenSum-preEvenSum-nums[i]){
                    res++;
                }
                preEvenSum+=nums[i];
            }else {
                if (preEvenSum+oddSum-preOddSum-nums[i]==preOddSum+evenSum-preEvenSum){
                    res++;
                }
                preOddSum+=nums[i];
            }
        }
       return res;
    }

在这里插入图片描述

func waysToMakeFair(nums []int) int {
	evenSum,oddSum,res:=0,0,0
	for i := 0; i < len(nums); i++ {
		if i%2==0{
			evenSum+=nums[i]
		}else {
			oddSum+=nums[i]
		}
	}
	preEvenSum,preOddSum:=0,0
	for i := 0; i <len(nums); i++ {
		if i%2==0{
			if preEvenSum+oddSum-preOddSum==preOddSum+evenSum-preEvenSum-nums[i]{
				res++
			}
			preEvenSum+=nums[i]
		}else {
			if preEvenSum+oddSum-preOddSum-nums[i]==preOddSum+evenSum-preEvenSum{
				res++
			}
			preOddSum+=nums[i]
		}
	}
	return res
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[JAVA安全]JACKSON反序列化

前言 ackson是一个开源的Java序列化和反序列化工具&#xff0c;可以将Java对象序列化为XML或JSON格式的字符串&#xff0c;以及将XML或JSON格式的字符串反序列化为Java对象。 依赖 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifact…

中国省际铁路通行时间数据

一、数据简介 本数据来自南京大学长江产业经济研究院《全国统一大市场下的省际铁路交通研究报告》的附录部分。中国的铁路&#xff08;高铁&#xff09;建设取得了辉煌成果。但受铁路时刻众多、历史数据不容易搜集整理的限制&#xff0c;学术与政策研究者一直无法对铁路建设的时…

三、JDBC详解

教程相关资料&#xff1a;https://www.aliyundrive.com/s/wMiqbd4Zws6 1&#xff0c;JDBC概述 在开发中我们使用的是java语言&#xff0c;那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。 1.1 JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套…

Nacos 配置中心 服务端推送变更源码讲解

目录 1. 配置引起变更的两种方式 1.1 后台管理直接操作 1.2 NacosClient 调用 RPC 接口 2. 变更事件处理 AsyncNotifyService 2.1 HTTP 任务 2.2 RPC任务 2.3 NacosServer 其他节点接收到消息后如何处理 3. 客户端推送实现&#xff1a;DumpService.dump 接着上一篇 Nac…

1601_读Dennis M. Ritchie and Ken Thompson的The UNIX TimeSharing System_Unix分时复用系统

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 很久之前就闻听了UNIX的大名&#xff0c;也看过很多相关的故事类文章。其中最让我印象深刻的莫过于Ken发明UNIX的故事以及这个系统对于Linux以及GNU的OS的影响&…

Linux操作系统之线程同步

文章目录一、线程的实现&#xff1a;用户级、内核级、组合二、线程的同步&#xff08;通讯&#xff09;&#xff1a;信号量&#xff0c;互斥锁&#xff0c;条件变量&#xff0c;读写锁1&#xff09;信号量2&#xff09;互斥锁操作&#xff1a;加锁&#xff0c;解锁。3&#xff…

浮躁的当下或许我们更加需要一颗平常心

科技的迅速发展&#xff0c;已经融入我们的生活&#xff1b;曾经的慢生活慢节奏早已离我们远去&#xff0c;取而代之的是伴随科技齿轮快速运转的生活&#xff0c;快节奏更是科技时代下人们普遍生活的真实写照。 然而&#xff0c;科技虽然带给了我们生活的极大的便利&#xff0…

php伪协议

目录 一、伪协议介绍 1、php://协议 2、php://filter伪协议 3.php://input&#xff08;读取POST数据&#xff09; 4、file伪协议 5、phar://伪协议(读取压缩包文件内容) 6、压缩文件伪协议 6.1.zip://[压缩文件绝对路径]%23压缩文件内的子文件名 6.2.compress.bzip2://…

Mybatis 的输出结果封装小细节

resultType 属性可以指定结果集的类型&#xff0c;它支持基本类型和实体类类型。我们在前面的 CRUD 案例中已经对此属性进行过应用了。需要注意的是&#xff0c;它和 parameterType 一样&#xff0c;如果注册过类型别名的&#xff0c;可以直接使用别名。没有注册过的必须使用全…

Markdown基础语法

文章目录Markdown基础语法一、标题使用&#xff1a;2、二级标题3、一次类推二、字体三、引用四、分割线五、插入图片六、超链接七、列表1、有序列表2、无序列表八、表格九、代码十、添加目录九、代码十、添加目录Markdown基础语法 一、标题使用&#xff1a; 格式&#xff1a;…

智能驾驶 车牌检测和识别(二)《YOLOv5实现车牌检测(含车牌检测数据集和训练代码)》

智能驾驶 车牌检测和识别&#xff08;二&#xff09;《YOLOv5实现车牌检测&#xff08;含车牌检测数据集和训练代码&#xff09;》 目录 智能驾驶 车牌检测和识别&#xff08;二&#xff09;《YOLOv5实现车牌检测&#xff08;含车牌检测数据集和训练代码&#xff09;》 1. 前…

[Vulnhub] DC-4

下载链接&#xff1a;https://download.vulnhub.com/dc/DC-4.zip 同DC-3 这个靶机也是只有一个flag。 全面信息搜集hydra爆破登录和ssh密码teehee命令(写入文件内容)提权/etc/passwd & /etc/sudoers 文件利用 目录 <1> 信息搜集 <2> hydra爆破登录密码 <…

怎么解除pdf的加密,建议收藏这几种方法

我们在下载资料的时候经常能遇到PDF文档&#xff0c;有时候这些文档还会被设置需要输入密码才能打开。有些朋友找不到密码就只能放弃这份资料&#xff0c;其实还可以再争取一下&#xff0c;解除PDF的加密不是没有可能的。将PDF的密码破除后我们就不再需要密码就能阅读使用该文档…

SpringBoot利用AOP线程池异步设置缓存

文章目录设置缓存1、定义注解2、AOP3、测试设置缓存 1、定义注解 注解定义四个属性&#xff0c;分别是&#xff1a; value&#xff0c;key的别名key : redis的key,如果key不设置&#xff0c;则会用方法名加参数列表作为keyexpire&#xff1a;失效时间&#xff0c;默认为 1天…

Dockerfile创建镜像并上传到Docker Hub

Dockerfile创建镜像并上传到Docker Hub1. Dockerfile1.1 准备文件1.2 构建镜像2. 上传docker hub参考1. Dockerfile 通过Dockerfile构建镜像 1.1 准备文件 在某个空文件夹&#xff08;假设名为test&#xff09;下编写Dockerfile文件 # 声明使用哪个基础镜像 FROM ubuntu:20.0…

Spring Cloud微服务网关Gateway组件学习笔记

目录 网关简介 1. 什么是Spring Cloud Gateway 1.1 核心概念 1.2 工作原理 2. Spring Cloud Gateway快速开始 2.1 环境搭建 2.2集成Nacos 3. 路由断言工厂&#xff08;Route Predicate Factories&#xff09;配置 3.1内置断言工厂 3.2自定义 4. 过滤器工厂&#xf…

Android Studio实现志愿者系统

项目目录一、项目概述二、主要技术三、开发环境四、详细设计1、基础Activity2、活动信息3、成员信息4、百度地图5、Widget组件五、运行演示一、项目概述 本系统采用MVC架构设计&#xff0c;SQLite数据表有用户表、成员表和活动表&#xff0c;有十多个Activity页面。打开应用&a…

123、【回溯算法】leetcode ——491. 递增子序列:unordered_set去重和int数组去重(C++版本)

题目描述 原题描述&#xff1a;491. 递增子序列 解题思路 此题也是子集问题&#xff0c;但和 90.子集II &#xff08;子集问题startIndex去重&#xff09; 的区别在于&#xff1a;&#xff08;1&#xff09;存储结果集判定条件&#xff1b;&#xff08;2&#xff09;输入数据…

Python学习笔记十二之十大经典排序算法

Python学习笔记十二之十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;…

zos JESMSGLG 不显示 job steps return codes

zos JESMSGLG 不显示 job steps return codes 在普通学习的时候&#xff0c;SDSF 查看 JCL 结果&#xff0c;可能并不会注意到下面结果有什么差别 但跟公司的大型机出的结果是不同的&#xff0c;就是缺少了 job steps return codes&#xff0c;在 STARTED 和 ENDED 中间应该有…