分割数组(将数组三等分)
简单面试题——分割数组
时间复杂度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!");}}
分割数组(将数组三等分)相关推荐
- javascript 中 split 函数分割字符串成数组
分割字符串成数组的方法有很多,不过使用最多的还是split函数 <script language="javascript"> str="2,2,3,5,6,6 ...
- B10_NumPy数组操作、修改数组形状、翻转数组、修改数组维度、连接数组、分割数组、数组元素的添加与删除
NumPy数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 修改数组形状 函数 描述 resha ...
- 把字符串3,1,2,4以,分割拆分为数组,数组元素并按从小到大的顺序排列
package com.wangcf; /*** 把字符串"3,1,2,4"以","分割拆分为数组,数组元素并按从小到大的顺序排列* @author fan** ...
- split 将字符串分割成字符串数组
list_name = list_name.split(","); split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.split(separa ...
- php分割文本读入数组,PHP fgets按行读取字符串和explode分割字符串为数组
PHP fgets按行读取字符串和explode分割字符串为数组 file.txt 类型|所在目录|文件|大小|创建时间 File|C:\Program Files\Java\jre7\lib\zi\ ...
- mysql存储过程数组字符串_Mysql通过存储过程分割字符串为数组
分割字符串为数组需要用到 三个mysql 的函数 : REVERSE(str) 返回颠倒字符顺序的字符串str. SUBSTRING_INDEX(str,delim,count) 返回从字符串str的 ...
- JS对象 字符串分割 split() 方法将字符串分割为字符串数组,并返回此数组。 语法: stringObject.split(separator,limit)...
字符串分割split() 知识讲解: split() 方法将字符串分割为字符串数组,并返回此数组. 语法: stringObject.split(separator,limit) 参数说明: 注意:如 ...
- c字符串分割成数组_数组与字符串
定义数组时,应该注意以下几点: (1) 数组使用的是方括号[ ],不要误写成小括号( ). (2) 常量表达式的值必须是一个正整数值,不能含有变量,但是可以是符号常数或常量表达式. (3) 数组定义后 ...
- Java中将字符串用空格分割成字符串数组的split方法
官方文档链接:public String[] split(String regex) 本文以空格作为分割串. CaseOne import java.util.Scanner;public class ...
- JavaScript split() 方法:把一个字符串分割成字符串数组
split() 方法用于把一个字符串分割成字符串数组. 注意: split() 方法不改变原始字符串. var str = 'Begonia flower sleepless'; // 以空格分隔 v ...
最新文章
- NLP入门之路及学习方法:从任务实践入手!
- 蓝桥杯2015初赛试题
- Mybatis的@Param注解作用
- QT-在子控件上绘图的两种方式
- 机器学习——图解SVM中gamma和c参数的作用
- C++ opencv的一些基础知识
- 技术交底软件_【干货分享】软件类产品如何进行专利挖掘与技术交底书撰写?...
- 一文看懂什么是MQ消息队列
- vscode vim快捷键失效_VIM真的好用吗?到底要不要学习VIM?
- 我的第一个Python随笔
- origin2021绘图软件安装教程
- 记录POJO类、DO、DTO、BO概念
- UOJ220 [NOI2016] 网格 【割顶】【并查集】
- 服务器指令显示字幕,gdc服务器字幕设置
- Hydra 6.4.xx,Hydra程序框架
- ubuntu中/etc/hosts文件的作用
- Remix-IDE安装开发环境与使用文档(Windows环境)
- ai怎么平均排列,AI怎么等距离排列直线? ai等比排列直线的教程
- oracle怎样建表,oracle怎样建表?_数据库
- 艾美捷ALC-0159基本参数文献参考
热门文章
- docker :open /var/lib/docker/tmp/GetImageBlob318829910: no such file or directory异常解决
- Linux下tomcat的安装与卸载以及配置(超简单)
- UUID的使用及其原理
- mysql修改校对集_MySQL 教程之校对集问题
- 安装 sklearn 报错 ImportError: cannot import name Type
- “年轻”有价值,才是本钱
- 传感器融合带来多重好处
- 常用语义分割小样本模型
- 2021年大数据HBase(十四):HBase的原理及其相关的工作机制
- PHP算法题:如何实现冒泡排序