博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找出数组中所有组合中最大的值
阅读量:5949 次
发布时间:2019-06-19

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

面试中,经常有算法题:

比如找出一个数组中的所有组合,并找出最大的值。

代码如下:

1 package com.company.algorithm; 2  3 /** 4  * 选择数组中和的值最大的一组,例如:[2,-7,5,-9],组大的一组是:2,-7,5值为0 5  */ 6 public class SelectValueMaxGroup { 7     public static void main(String[] args) { 8         int[] list = {6, -1, 2, -9, 4, -5, 7, -8, 3, -10, 15}; 9         int max = getMax(list);10         System.out.println(max);11     }12 13     /**14      * 获取值最大的那组的值15      * 算法:16      * 1. 如何找到所以的分组?设数组长度为n,则组的个数=n-1 + n - 2 + ...1 即: (n - 1) * (n - 1 + 1) / 2 ;17      *    例如数组长度为10,则根据公式:(10 - 1) * ( 10 - 1 + 1) / 2 = 45中组合18      * 2. 依次从第一个元素开始找与它所有的组合,直到找到最后一个组合19      * 3. 计算每个组合的值,找到最大的20      * @param list 数组21      * @return 组合最大的值22      */23     private static int getMax(int[] list) {24         int max = 0;25         int temp;26         //从第一个元素开始组合,逐次到数组最大长度27         for (int i = 0; i < list.length - 2; i++) {28             //控制组合,由索引m递增控制29             for (int m = i + 1; m <= list.length - 1; m++) {30                 temp = getValue(list, i, m);31                 if (temp != max && temp > max) {32                     max = temp;33                 }34             }35         }36         return max;37     }38 39     /**40      * 获取数组从索引开始大结束的值,及组合的值41      * @param list 数组42      * @param start 开始索引43      * @param end 结束索引44      * @return 组合的值45      */46     private static int getValue(int[] list, int start, int end) {47         int temp = 0;48         for (int i = start; i <= end; i++) {49             temp += list[i];50         }51 52         return temp;53     }54 }

 

转载于:https://www.cnblogs.com/feiyujun/p/10085849.html

你可能感兴趣的文章
PHP CURL并发,多线程
查看>>
ES 概念及动态索引结构和索引更新机制
查看>>
iOS 开发百问(2)
查看>>
MySQL for Mac 安装和基本操作(包含后期的环境变量设置)
查看>>
Linux及windows下常见压缩程序的压缩能力对比
查看>>
JAVAEE-junit测试hibernate里的方法(hibernate交给spring管理)的问题
查看>>
MOTO MB860 国行2.3.5优化增强ROM_Top_T5_end(经典收藏版)
查看>>
C#学习经典(二)---MVC框架(Model view Controller)
查看>>
我的友情链接
查看>>
log4j配置文件说明
查看>>
Maven: 为Compiler插件设置source和target版本
查看>>
L2TP/IPSec一键安装脚本
查看>>
linux下永久添加静态路由
查看>>
android 全局变量和局部变量命名规则
查看>>
Ubuntu Sub-process /usr/bin/dpkg
查看>>
详解DNS的常用记录(下):DNS系列之三
查看>>
“爆炸门”苹果补刀,三星该“哭晕了”!
查看>>
基于linux的3款压力测试工具:Siege,webbench,ab
查看>>
Netty Buffer
查看>>
华为AAA认证典型配置举例
查看>>