2022 E3 算法题第三题(Fair Count)

题目内容

You are given two arrays A and B consisting of N integers each.

Index K is named fair if the four sums (A[0] +... + A[K-1]), (A[K] +... + A[N-1]), (B[0] +... + B[K-1]) and (B[K] + ... + B[N-1]) are all equal. In other words, K is the index where the two arrays, A and B, can be split (into two non-empty arrays each) in such a way that the sums of the resulting arrays’ elements are equal.

For example, given arrays A = [0, 4, -1, 0, 3] and B = [0, -2, 5, 0, 3], index K = 3 is fair.

The sums of the four subarrays are all equal: 0 + 4+ (-1) = 3; 0+3 = 3; 0+(-2)+5=3 and 0+3=3. On the other hand, index K = 2 is not fair, the sums of the Subarrays are: 0 + 4 = 4; (-1)+0+3=2: 0+(-2) =-2 and 5+0+3=8.

Write a function:

        Class Solution { public int solution(int[] A, int[] B); }

which, given two arrays of integers A and B, returns the total number of fair indexes.

Examples:

1. Given A = [0, 4, -1, 0, 3] and B = (0, -2, 5, 0, 3], your function should return 2. The fair indexes are 3 and 4. In both cases, the sums of elements of the subarrays are equal to 3.

2. Given A = [2, -2, -3, 3] and B = (0, 0, 4, -4], your function should return 1. The only fair index is 2. Index 4 is not fair as the subarrays containing indexes from K to N - 1 would be empty.

3. Given A = [4, -1, 0, 3] and B = [-2, 6, 0, 4], your function should return 0. There are no fair indexes.

4. Given A = [3, 2, 6] and B = [4, 1, 6], your function should return 1.

5. Given A = [1, 4, 2, -2, 5], B =[7, -2, -2, 2, 5], your function should return 2. The fair indexes are 2 and 4.

解法一

思路

先求两个数组A和B每个的和,然后遍历数组A和B,分别求出数组A和数组B的左边的子数组和和右边的子数组的和。如果四个子数组的和都相同时候,fairCount加1.最后输出fairCount。

java 代码实现

public class Task3 {public int solution(int[] A, int[] B){int sumA = Arrays.stream(A).sum();int sumB = Arrays.stream(B).sum();int fairCount = 0;int leftSubArrayASum = 0;int leftSubArrayBSum = 0;for (int index=0; index< A.length-1 ; index++){leftSubArrayASum = leftSubArrayASum + A[index];leftSubArrayBSum = leftSubArrayBSum + B[index];if (index==0){//each subarrays would be non-emptycontinue;}if (leftSubArrayASum == leftSubArrayBSum && (sumA-leftSubArrayASum) ==(sumB-leftSubArrayBSum)){fairCount ++;}}return fairCount;}public static void main(String[] args) {Task3 task = new Task3();int[] A = new int[]{0, 4, -1, 0, 3};int[] B = new int[]{0, -2, 5, 0, 3};System.out.println(task.solution(A, B));  // Output: 2A = new int[]{2, -2, -3, 3};B = new int[]{0, 0, 4, -4};System.out.println(task.solution(A, B));  // Output: 1A = new int[]{4, -1, 0, 3};B = new int[]{-2, 6, 0, 4};System.out.println(task.solution(A, B));  // Output: 0A = new int[]{3, 2, 6};B = new int[]{4, 1, 6};System.out.println(task.solution(A, B));  // Output: 1A = new int[]{1, 4, 2, -2, 5};B = new int[]{7, -2, -2, 2, 5};System.out.println(task.solution(A, B));  // Output: 2}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#基础|string字符串的应用方法总结

哈喽,你好啊,我是雷工! 今天学了下关于C#string字符串的常用方法,以下为学习笔记。 01、字符串处理场景1 用邮箱注册账号时 A1、判断用户输入的邮箱是否包含“@”; A2、找到第一个匹配项所在的位置; A3、如果找到则为索引位置,否则为-1; 示例代码: static void Mai…

SQLite导出数据库至sql文件

SQLite是一款实现了自包含、无服务器、零配置、事务性SQL数据库引擎的软件库。SQLite是世界上部署最广泛的SQL数据库引擎。 SQLite 是非常小的&#xff0c;是轻量级的&#xff0c;完全配置时小于 400KiB&#xff0c;省略可选功能配置时小于250KiB。 SQLite 源代码不受版权限制。…

补档 -- 测试的分类(1)

最近有很多人私信我说: 灰灰你什么时候写测试分类阿, 本来我要开始肝性能测试的, 我一看, 奥, 之前摸鱼忘写了, 所以这里补档(叶问指着一边笑.jpg). 总览 标红的需要注意一下. 为什么要对软件测试进行分类? 软件测试是软件生命周期的一个重要环节, 具有较高的复杂性, 对于软…

C语言-字符函数与字符串函数

在C语言中&#xff0c;我们经常要对字符或是字符串进行各种操作。那C语言究竟给了我们哪些方法呢&#xff0c;本篇文章就是让大家了解对字符和字符串处理相关的知识。 目录 1.字符函数 1.1字符分类函数 1.2字符转换函数 2.字符串函数 2.1strlen函数的使用和模拟实现 2.2…

数电期末复习(二)逻辑代数基础

这里写目录标题 2.1 二值逻辑变量与基本逻辑运算2.1.1 与运算2.1.2 或运算2.1.3 非运算2.1.4 常用复合逻辑运算 2.2 逻辑函数的建立及其表示方法2.2.1 真值表表示2.2.2 逻辑函数表达式表示2.2.3 逻辑图表示方法2.2.4 波形图表示方法 2.3 逻辑代数2.3.1 逻辑代数的基本定律和恒等…

磁盘的管理

会在linux中使用硬盘 分区 格式化&#xff08;重新安装文件系统&#xff09; 挂载 硬盘的分类 1.机械硬盘 2.固态硬盘 硬盘的数据结构 扇区&#xff1a;盘片被分为多个扇形区域&#xff0c;每个扇区存放512字节的 数据 &#xff08;扇区越多容量越大&#xff09; 存放数据的…

开启智慧之旅,AI与机器学习驱动的微服务设计模式探索

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自热榜文章&#x1f525;&#xff1a;探索设计模式的魅力&#xff1a;开启智慧…

排序 “贰” 之选择排序

目录 ​编辑 1. 选择排序基本思想 2. 直接选择排序 2.1 实现步骤 2.2 代码示例 2.3 直接选择排序的特性总结 3. 堆排序 3.1 实现步骤 3.2 代码示例 3.3 堆排序的特性总结 1. 选择排序基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个…

前后端交互概念

前后端交互概念 1前后端分离开发概念2搭建后端环境2.1配置文件commomcommon-utilservice-utilmodelservice gitee使用 1前后端分离开发概念 前段&#xff1a;运用html、css、js和现成库&#xff0c;对数据作展示。 后端&#xff1a;运用Java和Java框架&#xff0c;提供数据或操…

Redis 逻辑过期策略设计思路

引言&#xff1a; 当我们平常使用Redis缓存的时候&#xff0c;会出现一种场景&#xff0c; redis的key到过期时间了&#xff0c;总是需要到数据库里面去查一遍数据再set回redis&#xff0c;这个时候如果数据库响应比较慢&#xff0c;那么就会造成用户等待&#xff0c;如果刚好…

vue-Router 路由(常量路由)

1、安装 pnpm i vue-router 2、新建文件&#xff1a;src/routes.ts import { RouteRecordRaw } from vue-routerexport const constantRoute: RouteRecordRaw[] [{//path: /,redirect: /login,},{//path: /login,component: () > import(/views/Login/index.vue),name…

Jenkins构建实用场景指南

1 总体说明 本文主要介绍在研发实战时,通过Jenkins解决企业级软件构建打包一些实用场景。通常是在打包构建前,通过命令和工具进行预处理,避免修改源码,可按需配置构建任务,自动持续集成。 2 Jenkins简介 2.1 复制任务 研发实战创建构建任务,推荐从已有的构建任务进行…