zoukankan      html  css  js  c++  java
  • Java面试题——数组求和统计

    牛牛有两个长度为nn的数组a, ba,b,牛牛希望统计有多少数对(l, r)(l,r)满足:

    1,0<=l<=r<=n-1

    2,sum_{i= l}^{r}{a_i} = b_l + b_r∑i=lra**i=b**l+b**r

    示例1

    输入

     

     [1,2,3,4],[2,1,4,5]

    输出

     

     4

    说明

     满足条件的数对有(0, 1), (0, 2), (1, 1), (1, 2)(0,1),(0,2),(1,1),(1,2)

    示例2

    输入

     

     [0,0,1,1,1],[2,0,4,3,3]

    输出

     

     2

    1,结题思路

    不使用暴力破解,因为会超时!如果想更快的解决这个问题,需要对于问题进行转换;主要是这个公式: 图片说明 这个公式比较难求解在具有两个变量:l与r,双份变量,双份难度!因此最好整成一个变量,那怎么办?举个例子

     
     要求解 1+2+3+4+5+6 中第三个数字3到最后一个数字6之间的和可以怎么求?
     (1+2+3+4+5+6) - (1+2+3) + 3
     有人说,那这样不是很繁琐???对的,但是这样我们发现公式中的变量只剩下一个,即r或者l,怎么说
     我们令S(i)表示数组A从0->i位置上的所有数据的和,则:
     s(6) = (1+2+3+4+5+6)
     S(3) = (1+2+3)
     原来的式子就可以表示为:
     S(6) - S(3) + A[3]
     因此,我们只需要考虑如何求解S中的每个值即可

    返回到原式中,可以根据上述描述将式子转换为: 图片说明 进一步调整两边的变量,得到最终的结果 图片说明 sumArray[i]为数组a中从位置0到位置i上的所有元素之和,则上述式子可以表述为

    图片说明

    求解数组sumArray则相对来说比较简单了,具体的代码如下:

    2,完整代码

     import java.util.*;
      
      
     public class Solution {
         /**
          * 计算有多少对符合条件的数对
          * @param a int整型一维数组 数组a
          * @param b int整型一维数组 数组b
          * @return int整型
          */
         public int countLR (int[] a, int[] b) {
             // write code here
             int result = 0;
             int sumArray[] = new int[a.length];
             sumArray[0] = a[0];
      
             for(int i = 1; i <a.length; i++)
                 sumArray[i] = sumArray[i-1] + a[i];
      
      
             for(int l = 0; l < a.length; l++)
                 for(int r = l; r <b.length; r++)
                     if(sumArray[r] - b[r] == sumArray[l] - a[l] + b[l])
                         result++;
      
             return result;
         }
     }

    最后的最后,上点干货。(但凡有个这样的女朋友,我会熬夜么?)

     

    img

    最后我把我收集的各大厂经典高频面试题和Java高级进阶、架构师视频教程送予大家。部分资料如下图所示:

    获取地址:java进阶学习资料,面试题,电子书籍免费获取

     

  • 相关阅读:
    对 Unity 脚本生命周期的调研
    实现僵尸跑酷游戏的 UGUI 实践
    Unity UGUI 按钮绑定事件的 4 种方式
    virtualbox下给centos7固定ip
    linux新建文件夹
    centos7修改hostname
    linux下杀进程的方法
    virtualbox下最小化安装centos7后上网设置
    ubuntu下自动获取ip设置
    Caused by: org.springframework.beans.NotWritablePropertyException:
  • 原文地址:https://www.cnblogs.com/coderhf/p/13453842.html
Copyright © 2011-2022 走看看