博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java算法之 n个整数中找出连续m个数加和是最大
阅读量:6157 次
发布时间:2019-06-21

本文共 2226 字,大约阅读时间需要 7 分钟。

  hot3.png

分析:

m个连续的整数加和是最大,那么最简单的实现方式就是:从下标为0查找m个元素,依次n个数组成的容器进行遍历,每次遍历判断当前最大的m个数之和,遍历结束后返回。

public class MaxArray {      public static void main(String[] args) {          // int[] 数组 asList返回 int[];形式List对象           Integer[] paras = { 133, 445, 6768, 23, 656, 123105, 768, 234,                  787, 6321, 5677, 234, 1445, 3551, 547, 3245, 12357 };          //引用类型的数组转化为集合          List
lists = Arrays.asList(paras); int n = 6; //将集合转化为数组 System.out.println(getArray((Integer[])lists.toArray(),n)); System.out.println(getArray(paras, n)); } public static
String getArray(Integer[] params, int n) { // 声明maxs,初始化temp Integer[] maxs = null, temp = null; if (!(params instanceof Integer[])) { return "参数类型错误"; } temp = new Integer[n]; maxs = new Integer[n]; int len = params.length; for (int i = 0; i < len; i++) { if (i + n <= len) { // 数组复制 相当于切片 System.arraycopy(params, i, temp, 0, n); if (maxs[0] == null || (maxs[0] != null && (getSum(maxs) < getSum(temp)))) { // 引用相同 不可使用 maxs = temp; // 从temp复制一份给maxs System.arraycopy(temp, 0, maxs, 0, n); } } } // 将数组以字符打印 return Arrays.toString(maxs); } //取数组或者集合的加和 public static
int getSum(T t) { int sum = 0; if (t instanceof List
) { List
temp = (List
) t; int len = temp.size(); for (int i = 0; i < len; i++) { sum += (Integer)temp.get(i); } } else if (t instanceof Integer[]) { Integer[] temp = (Integer[]) t; for (int i = 0; i < temp.length; i++) { sum += temp[i]; } } return sum; } }

如代码所示,Java底层数据结构多由数组实现的,并且在System库中提供了数组复制的本地方法arraycopy,可以轻松的将改变属性的引用。使用Arrys.asList()方法和list.toArray()可以轻松的实现数组到集合之间的相互切换。

转载于:https://my.oschina.net/90888/blog/1649300

你可能感兴趣的文章
js函数的内部属性---arguments,callee,caller
查看>>
关于C10K、异步回调、协程、同步阻塞
查看>>
米聊PK微信:微信是一朵奇葩
查看>>
ext 部署到 tomcat服务器下,通过http8080端口查看
查看>>
配置MYSQL远程连接
查看>>
centos下的源
查看>>
[一文一命令]find命令详解
查看>>
oracle利用分隔符,组合查询想表达的任何话
查看>>
从exe4j生成的exe中抽取jar文件
查看>>
python3基础学习(双色球随机生成器)
查看>>
CentOS 7中iptables服务暂停启动和保存备份
查看>>
ElasticSearch学习29_基于Elasticsearch实现搜索推荐
查看>>
istio-0.8 服务超时配置
查看>>
FastJson简单应用
查看>>
测试工具iometer, iozone, bonnie++
查看>>
影响用户体验的4个因素
查看>>
浅谈MSTP时延与带宽和速率的关系
查看>>
深入理解javascript原型和闭包(12)——简介【作用域】
查看>>
我的友情链接
查看>>
我的友情链接
查看>>