简单面试题——分割数组
时间复杂度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!");}}

分割数组(将数组三等分)相关推荐

  1. javascript 中 split 函数分割字符串成数组

    分割字符串成数组的方法有很多,不过使用最多的还是split函数 <script language="javascript"> str="2,2,3,5,6,6 ...

  2. B10_NumPy数组操作、修改数组形状、翻转数组、修改数组维度、连接数组、分割数组、数组元素的添加与删除

    NumPy数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 修改数组形状 函数 描述 resha ...

  3. 把字符串3,1,2,4以,分割拆分为数组,数组元素并按从小到大的顺序排列

    package com.wangcf; /*** 把字符串"3,1,2,4"以","分割拆分为数组,数组元素并按从小到大的顺序排列* @author fan** ...

  4. split 将字符串分割成字符串数组

    list_name = list_name.split(","); split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.split(separa ...

  5. php分割文本读入数组,PHP fgets按行读取字符串和explode分割字符串为数组

    PHP fgets按行读取字符串和explode分割字符串为数组 file.txt 类型|所在目录|文件|大小|创建时间 File|C:\Program Files\Java\jre7\lib\zi\ ...

  6. mysql存储过程数组字符串_Mysql通过存储过程分割字符串为数组

    分割字符串为数组需要用到 三个mysql 的函数 : REVERSE(str) 返回颠倒字符顺序的字符串str. SUBSTRING_INDEX(str,delim,count) 返回从字符串str的 ...

  7. JS对象 字符串分割 split() 方法将字符串分割为字符串数组,并返回此数组。 语法: stringObject.split(separator,limit)...

    字符串分割split() 知识讲解: split() 方法将字符串分割为字符串数组,并返回此数组. 语法: stringObject.split(separator,limit) 参数说明: 注意:如 ...

  8. c字符串分割成数组_数组与字符串

    定义数组时,应该注意以下几点: (1) 数组使用的是方括号[ ],不要误写成小括号( ). (2) 常量表达式的值必须是一个正整数值,不能含有变量,但是可以是符号常数或常量表达式. (3) 数组定义后 ...

  9. Java中将字符串用空格分割成字符串数组的split方法

    官方文档链接:public String[] split(String regex) 本文以空格作为分割串. CaseOne import java.util.Scanner;public class ...

  10. JavaScript split() 方法:把一个字符串分割成字符串数组

    split() 方法用于把一个字符串分割成字符串数组. 注意: split() 方法不改变原始字符串. var str = 'Begonia flower sleepless'; // 以空格分隔 v ...

最新文章

  1. NLP入门之路及学习方法:从任务实践入手!
  2. 蓝桥杯2015初赛试题
  3. Mybatis的@Param注解作用
  4. QT-在子控件上绘图的两种方式
  5. 机器学习——图解SVM中gamma和c参数的作用
  6. C++ opencv的一些基础知识
  7. 技术交底软件_【干货分享】软件类产品如何进行专利挖掘与技术交底书撰写?...
  8. 一文看懂什么是MQ消息队列
  9. vscode vim快捷键失效_VIM真的好用吗?到底要不要学习VIM?
  10. 我的第一个Python随笔
  11. origin2021绘图软件安装教程
  12. 记录POJO类、DO、DTO、BO概念
  13. UOJ220 [NOI2016] 网格 【割顶】【并查集】
  14. 服务器指令显示字幕,gdc服务器字幕设置
  15. Hydra 6.4.xx,Hydra程序框架
  16. ubuntu中/etc/hosts文件的作用
  17. Remix-IDE安装开发环境与使用文档(Windows环境)
  18. ai怎么平均排列,AI怎么等距离排列直线? ai等比排列直线的教程
  19. oracle怎样建表,oracle怎样建表?_数据库
  20. 艾美捷ALC-0159基本参数文献参考

热门文章

  1. docker :open /var/lib/docker/tmp/GetImageBlob318829910: no such file or directory异常解决
  2. Linux下tomcat的安装与卸载以及配置(超简单)
  3. UUID的使用及其原理
  4. mysql修改校对集_MySQL 教程之校对集问题
  5. 安装 sklearn 报错 ImportError: cannot import name Type
  6. “年轻”有价值,才是本钱
  7. 传感器融合带来多重好处
  8. 常用语义分割小样本模型
  9. 2021年大数据HBase(十四):HBase的原理及其相关的工作机制
  10. PHP算法题:如何实现冒泡排序