练习数值计算。找出一个整数数组中子数组之和的最大值。

方法类:

package com.lwk.test2;

import java.util.Scanner;

public class Sum {

Scanner input = new Scanner(System.in);

public int sumParams(int nums[]) {
  int maxSum = 0;
  for (int i = 0; i < nums.length; i++) {
   int sum = 0;
   for (int j = i; j < nums.length; j++) {
    sum = sum + nums[j];
    if (sum > maxSum) {
     maxSum = sum;
    }
   }
  }
  System.out.println("子数组之和的最大值为:"+maxSum);
  return maxSum;
  
 }
}

测试类:

package com.lwk.test2;

import static org.junit.Assert.*;

import org.junit.Test;

public class SumTest {

@Test
 public void test() {
  /* int nums[] = {1,-2,3,5,-1}; */// 测试用例1 最大值8
  /* int nums[] = {1,-2,3,-8,5,1}; */// 测试用例1 最大值6
  int nums[] = { 1, -2, 3, -2, 5, 1 }; // 测试用例1 最大值7
  Sum sum = new Sum();
  sum.sumParams(nums);
 }

}

测试用例有三个,可以根据自己需要添加不同的测试用例

时间: 2024-10-29 19:09:39

练习数值计算。找出一个整数数组中子数组之和的最大值。的相关文章

找出一个整数数组的和最大的连续子数组

题目: 给任意一个整数数组,找出这个数组的和最大的连续子数组(子数组的和最大且子数组连续).要求:算法的时间复杂度为O(n). 程序设计思想: 1:用maxValue记录当前连续子数组和为最大的和的值,初始化其值为:maxValue=a[0].注:记数组为a[n]. 2:这个过程总的思想就是,从数组头开始往后,每次加进一个值,它们的和记为tempValue,若tempValue比新加进来的数值本身要小,应该从这个位置开始重新开始计算tempValue的值.而每次的tempValue都应该和max

找出一个整数数组中超过数组长度一半的元素(Java)

Question:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字 package com.study.zhipengs.test; import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. * 例如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, * 2}.由于数字2在数组中出现了5次,超过数组长度

找出一个整数数组中的第二大数

可能以故事形式:如从第一层到第十层电梯每层停一次,如何找到第二个大的钻石  1 #include<stdio.h>   2 #include<assert.h>   3 #define MINNUMBER -32768   4 int find_sec_max(int arr[],int size)   5 {   6     assert(arr);   7     int maxnumber=arr[0];   8     int sec_max=MINNUMBER;   9 

1152: 零起点学算法59——找出一个数组中出现次数最多的那个元素

1152: 零起点学算法59--找出一个数组中出现次数最多的那个元素 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 990  Accepted: 532[Submit][Status][Web Board] Description 找出一个数组中出现次数最多的那个元素 Input 第一行输入一个整数n(不大于20) 第二行输入n个整数 多组数据 Output 找出n个整数中出现次数最多的那个整数(

程序员面试100题之十:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值(转)

能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解. 假如有如下的两个数组,如图所示: 5,6,1,4,7,9,8 给定Sum= 10 1,5,6,7,8,9 给定Sum= 10 分析与解法 这个题目不是很难,也很容易理解.但是要得出高效率的解法,还是需要一番思考的. 解法一 一个直接的解法就是穷举:从数组中任意取出两个数字,计算两者之和是否为给定的数字. 显然其时间复杂度为N(N-1)/2即O(N^2).这个算法很简

算法题:找出一个数组中依次最大的k个元素

package arithmetic; import java.util.Arrays; /** * 找出一个数组中依次最大的k个元素 * @author SHI */ public class FindMaxFigure { public static void main(String[] args) { int[] a=new int[]{1,5,-1,8,0,2}; System.out.println(Arrays.toString(findBigFigure(a, 3))); } /*

c语言题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点

1 //题目:找出一个二维数组的"鞍点",即该位置上的元素在该行上最大,在该列上最小.也可能没有鞍点. 2 // 3 #include "stdio.h" 4 #include <stdlib.h> 5 int main() 6 { 7 int i,j,k,hang=1,lie=1; 8 printf("输入行"); 9 scanf("%d",&hang); 10 printf("输入列"

面试题1:找出一个数组中三个只出现一次的数字

version1: 找出一个数组中一个只出现一次的数字,其他数字都出现两次:将所有数字异或,得到的结果即为只出现一次的. version2: 找出一个数组中两个只出现一次的数字,其他数字都出现两次:将所有数字异或,得到的结果即为x=a^b, index为x中第一个为1的位,则a 和b中第index为必然有一个为1,有一个为0.据此将所有数据分为两组,一组的第index为都为1,另一组第index为都为0,第一组数字异或得到a,第二组数字异或得到b. 时间复杂度为o(n),空间复杂度为o(1).

需要排序的最短子数组的长度——是一个排序好的数组,中间某一部分被打乱了,让你找出打乱的那个子数组

需要排序的最短子数组的长度 貌似在leetcode上遇到过,就是一个排序好的数组,中间某一部分被打乱了,让你找出打乱的那个子数组. from:https://blog.csdn.net/behboyhiex/article/details/80758686 [题目] 给定一个无序数组arr,求出需要排序的最短子数组长度. 例如: arr = [1, 5, 3, 4, 2, 6, 7]返回4,因为只有[5, 3, 4, 2]需要排序. [思路] 双指针 第一次从左向右遍历,找左边比当前位置大的 第