zoukankan      html  css  js  c++  java
  • 《程序员代码面试指南》第八章 数组和矩阵问题 未排序数组中累加和小于或等于给定值的最长子数组长度

    题目

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

    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);
        }
    }
    
    

    结果

  • 相关阅读:
    Hive与Hadoop的交互流程
    Hadoop Webhdfs
    Hadoop HDFS的Java操作
    Hadoop JobHistory
    使用Eclipse构建Maven项目环境搭建
    Shell脚本简介 — 持续更新
    Hadoop基础 — Hadoop Shell
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/9010745.html
Copyright © 2011-2022 走看看