分割数组(将数组三等分)
简单面试题——分割数组
时间复杂度O(n)
//输入:一个自然数数组,选取其中2个数字num[i], num[j], 把数组三分,
// 每一部分的累加和(不包括分割点的数字)相等。
// 例:nums[] = [2,1,3,1,1,1,5,3],选取nums[2] = 3, num[6] = 5,
// 三部分的和都是3. 则打印输出2, 6,
// 如果找不到符合条件的等分点,返回失败。(数组大小的量级最大是10^5)public class DivideArray
{/*** 1、头指针从下标1开始,尾指针从倒数第二个元素开始* 2、计算前后指针分割开的两块数组元素是否相等,小的一边向中间进位,直至相等。* 3、然后计算中间区间的元素和是否与两边的元素和相等。* 4、若中间元素和大于两边元素和,则继续移动指针;若小于则直接返回false* @param inputArray* @return*/public static boolean Div2Three(int[] inputArray){if(inputArray == null || inputArray.length < 5){return false;}int arrayLength = inputArray.length;int startIndex = 1;int endIndex = inputArray.length - 2;int startSum = inputArray[0];int endSum = inputArray[arrayLength-1];int allSum = 0;for (int i = 0; i < arrayLength; i++){allSum += inputArray[i];}while (startIndex < endIndex - 1){if(startSum == endSum) {int midSum = allSum - 2 * startSum - inputArray[startIndex] - inputArray[endIndex];if (midSum < endSum){return false;}else if (midSum > endSum){startIndex++;endIndex--;}else{System.out.println("下标1:" + startIndex + " ,下标2:" + endIndex);return true;}}else if(endSum < startSum){endSum += inputArray[endIndex];endIndex--;}else{startSum += inputArray[startIndex];startIndex++;}}//若最终未找到对应的下标,则返回falsereturn false;}public static void main(String[] args){int[] inputArray = {2, 1, 3, 1, 1, 1, 5, 3};boolean isSuccess = Div2Three(inputArray);if (isSuccess){System.out.println("congratulations!");return;}System.out.println("what a pity!");}}
相关文章:

svn和git的本质区别是什么
上边图中,跨越了区的箭头,它中间的区数据都会同步。例如:git checkout ,它是将本地仓库数据更新到暂存区和工作区的。

使用JavaScript实现复杂功能:一个完整的电商网站搜索功能
随着互联网的发展,电子商务网站已经成为人们购物的重要平台。而在这些网站中,搜索功能无疑是核心功能之一。用户可以通过搜索快速找到他们需要的商品,从而提高购物体验。本文将详细介绍如何使用JavaScript实现一个完整的电商网站搜索功能。

牛年前的一小结——打响本命年的第一枪,继续刷题!
经过一段时间的小尝试,摸索出了一点点头儿吧。 总结一下子。 关于面试的java,像我这个经验层次(1-2year普通厂)的都不会太难。最多超不出力扣中等难度。 多练习链表、树、指针类的比较基础的题目;有解题方法并不是最重…

力扣1002.查找常用字符
力扣 1002. 查找常用字符 本人力扣练习已上传至码云,可互相学习借鉴。 难度-简单 题目: 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,…

springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope> </dependency><dependency><groupId>org.…

springboot设置文件上传大小(tomcat默认1M)
application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:multipart:max-file-size: 100MBmax-request-size: 500MB

kotlin重写构造方法编译报错:Primary constructor call expected
在kotlin中使用construct关键字定义构造方法,如果类定义时已经有构造方法(类名后带括号),需要添加构造方法时,需要使用以下写法: class User(var name,var age){//使用 :this() 调用主构造方法对参数赋默认…

Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多
Linux下创建软链接|硬链接,文件访问为空,提示:x x x: 符号连接的层数过多。 原因:创建符号链接的时候未使用绝对路径,无论是源文件路径还是目标路径,都需要使用绝对路径。 如: ln …

kotlin Bean加载失败lateinit property has not been initialized
Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘xxxApplicationConfig’: Unsatisfied dependency expressed through field ‘appConfigService’; nested exception is org.springframework.be…

Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid
Gradle错误提示:Java home supplied via ‘org.gradle.java.home’ is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换java版本时(卸载现在的java版本,如jdk15,安装另外的java版本…

恭喜你发现了宝藏,编程习惯-日积月累
总结: 条件查询可在数据库层创建queryDto进行统一操作。 代码复用:若有代码重复出现了三次,很大概率可以重构。(三则重构) dto和entity中的赋值操作,可以写成方法放在dto中。(充血模型&#x…

Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库
示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kotlin("plugin.spring") version "1.3.72"java-librarymaven-publishmaven }如同maven项目一样设置组、版本信息 gr…

妙用postman系列——postman建组、分享
妙用postman系列——postman建组、分享 添加新的组和请求。 3、生成分享链接 4、导入分享链接

Postman使用Date数据类型,Postman发送Date类型数据,Postman模拟前端调用
Postman使用Date数据类型: 在form-data数据类型下,使用 2021/7/7 11:11:00 (yyyy/MM/dd HH:mm:ss) 的数据格式即可 如下: 在json数据格式中,这种的则不能适用,需要在Per-request Script中设置…

IDEA中将代码块封装为方法,IDEA代码重构快捷键
IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt Shift M Mac快捷键:Alt Command M 如图:

Kotlin协程使用,协程使用注意事项,协程中的await方法使用|不使用suspend使用协程
参见 码云 协程使用方法一 (Dispatchers调度器模式) 指定不同线程。同线程会挂起并阻塞(挂起是不影响主线程执行,阻塞是同样的IO线程会阻塞) withContext(Dispatchers.IO) { // 👈 切换到 IO 线程&…

Alibaba Cloud Linux 2.1903 LTS 64位服务器yum源下载404,Alibaba Cloud Linux 2实例中使用docker-ce、epel等YUM源安装软件失败
[Alibaba Cloud Linux 2.1903 LTS 64位]服务器yum源下载404 failure: repodata/repomd.xml from docker-ce-stable: [Errno 256] No more mirrors to try. https://download.docker.com/linux/centos/2.1903/x86_64/stable/repodata/repomd.xml: [Errno 14] HTTPS Error 404 -…

OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
OpenAPI使用(swagger3) demo见Gitte 一、背景及名词解释 OpenAPI是规范的正式名称。规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公司)将Swagger 2.0规范捐赠给了Open API Initiative࿰…

linux环境下nacos的安装+启动,阿里云服务器安装nacos
nacos安装启动(linux环境): 基础:安装java环境 官网下载压缩包:如 nacos-server-1.2.1.tar.gz 放在自定义目录下 # 解压 tar -xvf nacos-server-1.2.1.tar.gz进入bin目录 cd nacos/bin # 启动 sh startup.sh -m sta…

SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一、引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错。 maven版本 <dependency><groupId>com.alibaba.cloud</groupId><artifact…

使用第三方SDK(如微信、qq、快看、头条等),调用接口405 Method Not Allowed
使用第三方SDK(如微信、qq、快看、头条等),调用接口405 Method Not Allowed 错误描述:postman请求正常,但客户端调用后接口没有反应,但返回了405错误。 解决方法:第三方sdk调用接口需要使用http…

ECS(Linux)连接RDS,使用命令行方式连接实例
使用命令行方式连接实例 通过命令行连接RDS MySQL数据库,连接方式如下: mysql -h<连接地址> -P<端口> -u<用户名> -p -D<数据库名称># 假设 用户testuser 密码123 数据库连接为 rm-bp1457xxxxxx.mysql.rds.aliyuncs.com mysql…

kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享
CORS通信过程,都是浏览器或http插件自动完成,不需要 用户/开发人员 参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码是完全一样的。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,…

创建数据库,指定数据库的字符集和编码顺序
创建数据库,指定它的字符集和编码顺序 create database {数据库名称} CHARACTER SET {字符集} COLLATE {排序规则}举例: create database collage CHARACTER SET utf8mb4 COLLATE utf8_general_ci

Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常
kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized 注解类加载延迟导致的异常 解决方法一:工厂模式 建一个工厂类,如UserServiceFactory,使用该方法 java版: public abs…

kotlin中继承父属性使用构造方法
kotlin中继承父属性使用构造方法 1. 定义父类,给它两个属性: abstract class AbstractResponseMessage {private var success trueprivate var reason: String? nullconstructor() {}constructor(success: Boolean, reason: String?) {this.succes…

在kotlin companion object中读取spring boot配置文件,静态类使用@Value注解配置
在kotlin companion object中读取配置文件 静态类使用Value注解配置 class Config {Value("\${name}")fun setName(name: String) {Config.name name}companion object {private var name:String ? nullfun getName(): String {return name}} }在companion object…

微信公众号为指定openid用户推送消息
微信公众号为指定openid用户推送消息 微信提供的开放接口中,有两个给指定openid的用户发送信息的接口,适用场景应该是向 预约用户或者中奖用户发送消息。 第一个接口:客服发送消息 请求方式: POST 请求地址:https://a…

Docker容器的备份与恢复,Docker镜像的备份与恢复
1. 备份容器 首先,为了备份Docker中的容器,我们会想看看我们想要备份的容器列表。要达成该目的,我们需要在我们运行着Docker引擎,并已创建了容器的Linux机器中运行 docker ps 命令。 # docker ps Docker Containers List 在此之…

SpringBoot部署脚本,拿走即用!
一个可以直接拿来使用的shell脚本,适用于springboot项目 #!/bin/bash # 这里可替换为你自己的执行程序,其他代码无需更改,绝对路径相对路径均可。 # 若使用jenkins等工具远程构建,则使用绝对路径,下面的日志输出路径同࿰…