寻找最大子数组

最近面试算法题遇到寻找最大连续子数组和的问题。例如{1,-2,3,4}的最大子数组是{3,4}和为7
Java代码如下

import java.io.InputStream;
import java.util.Scanner;

public class Pai {
public static void main(String[] args) {
System.out.println(“please write yuur want number .”);;
Scanner scanner = new Scanner(System.in);
int[] i = new int[scanner.nextInt()];
System.out.println(“please write yuur want “);;

    for (int j = 0; j < i.length; j++) {
        i[j] =scanner.nextInt();
    }

    fuc(i);
}

public static void fuc(int[] Array) {
    int MAX = 0;
    int now_sum = 0;
    boolean tag = false;
    int[] i = Array;

    for (int now_number : i) {
        if (now_number >= 0) {

            now_sum += now_number;

            if (now_sum > MAX) {
                MAX = now_sum;
                if (!tag) {
                    tag = true;
                }
            }

        } 
        // now_number<0;
        else {
            now_sum += now_number;
            if (now_sum > 0) {

            } else {// now_sum<=0
                now_sum = 0;
            }

        }
    }
    if (tag) {
        System.out.println(MAX);
    } else {
        if (i != null)
            MAX =max(i);
        System.out.println(MAX);
    }
}

// 方法外判断i是否为null好!!!
private static int max(int[] i) {
    int max_num = i[0];
    for (int j : i) {
        if (max_num < j) {
            max_num = j;
        }
    }
    return max_num;
}

}

// 方法外判断i是否为null好!!!
这个地方让我想起一个有意思的事,如果函数的返回类型是int型(例如Linux系统c语言main函数中,大部分都有返回值以实现管道),难免出现返回
成功值和返回错误值相同的情况,如实现一个功能:判断a是int型返回a;如果不是返回错误值——例子举的有点脑残,就将就一下吧。对于解决办法大家可以思考选取自己认为最优的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值