博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《程序员代码面试指南》第八章 数组和矩阵问题 未排序数组中累加和小于或等于给定值的最长子数组长度...
阅读量:6905 次
发布时间:2019-06-27

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

题目

未排序数组中累加和小于或等于给定值的最长子数组长度

java代码

package com.lizhouwei.chapter8;/** * @Description: 未排序数组中累加和小于或等于给定值的最长子数组长度 * @Author: lizhouwei * @CreateDate: 2018/5/8 20:14 * @Modify by: * @ModifyDate: */public class Chapter8_12 {    public int maxLength(int[] arr, int k) {        int sum = 0;        int[] helpArr = new int[arr.length + 1];        for (int i = 0; i < arr.length; i++) {            sum = sum + arr[i];            helpArr[i + 1] = Math.max(sum, helpArr[i]);        }        sum = 0;        int len = 0;        int maxLen = 0;        int index = 0;        for (int i = 0; i < arr.length; i++) {            sum = sum + arr[i];            index = bs(helpArr, sum - k);            len = index == -1 ? 0 : i - index + 1;            maxLen = Math.max(maxLen, len);        }        return maxLen;    }    public int bs(int[] helpArr, int num) {        int left = 0;        int right = helpArr.length - 1;        int mid = 0;        int res = -1;        while (left < right) {            mid = (left + right) / 2;            if (helpArr[mid] < num) {                left = mid + 1;            } else {                res = mid;                right = mid - 1;            }        }        return res;    }    //测试    public static void main(String[] args) {        Chapter8_12 chapter = new Chapter8_12();        int[] arr = {3, -2, -4, 0, 6};        System.out.print("数组 arr = {3, -2, -4, 0, 6}中和小于-2的最长子数组长度为:");        int maxLen = chapter.maxLength(arr, -2);        System.out.print(maxLen);    }}

结果

1369004-20180508202847665-2121298154.png

转载于:https://www.cnblogs.com/lizhouwei/p/9010745.html

你可能感兴趣的文章
android内存泄露
查看>>
android如何保证service不被杀死
查看>>
舌尖上的程序员
查看>>
Jquery实现下拉框与输入框动态切换,类似可编辑的下拉框
查看>>
内存泄露的点滴
查看>>
mongodb安装以及注册windows服务
查看>>
linux shell 管道命令(pipe)使用及与shell重定向区别
查看>>
Java Selenium封装--RemoteWebDriver
查看>>
教程:一分钟完成SiteMesh Template模板组合
查看>>
mysql远程连接不上
查看>>
模板jinja2常用方法
查看>>
LayoutInflater源码解析
查看>>
Linux命令scp
查看>>
Java的JNDI使用
查看>>
Android-布局管理-帧布局
查看>>
基于JAVA的反射机制
查看>>
Nginx 四种分配方式——session处理
查看>>
webdav java libraay
查看>>
冒泡排序
查看>>
win8.1 cygwin编译java轻量虚拟机avian
查看>>