zoukankan      html  css  js  c++  java
  • 累加和位指定值的最长子数组

    package day;
    /**
     * 累加和位指定值的最长子数组
     * 这是一个可伸缩的滑动窗口,不断地在k值的上下波动,
     * 并且要不断的判断right是否越界,由于都是整数,所以left不会比right先到arr.length位置上。
     * @author Administrator
     *
     */
    public class Demo2 {
     public static int getMaxLength(int[] arr, int k){
         if(arr == null || arr.length == 0 || k <= 0){
             return 0;
         }
         int left = 0;
         int right= 0;
         int sum = arr[0];
         int len = 0;
         while(right <= arr.length){
             //匹配到相等了 需要记录
             if(sum == k){
                 len = Math.max(len, right - left + 1);
                 sum = sum - arr[left ++];
             }
             else if(sum < k){
                 right ++;
                 if(right == arr.length){
                     break;
                 }
                 sum =sum + arr[right];
             }
             else{
                 sum = sum - arr[left ++];
             }
         }
         return len;
     }
    }
  • 相关阅读:
    [AX]AX2012开发新特性outer join中使用QueryFilter
    [AX]AX2012开发新特性表继承
    docker环境安装
    poj 3469
    poj 1187
    poj 1159
    poj 2135
    poj 1273
    poj 1458
    poj 1141
  • 原文地址:https://www.cnblogs.com/caobojia/p/6765828.html
Copyright © 2011-2022 走看看