sweet1cris

Untitled

Jan 9th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.05 KB | None | 0 0
  1.  
  2. public class Solution {
  3.     /**
  4.      * @param A an integer array
  5.      * @param start an integer
  6.      * @param end an integer
  7.      * @return the number of possible answer
  8.      */
  9.     int find(int[] A, int len, int value) {
  10.         if (A[len-1] < value )
  11.             return len;
  12.        
  13.         int l = 0, r = len-1, ans = 0;
  14.         while (l <= r) {
  15.             int mid = (l + r) / 2;
  16.             if (value <= A[mid]) {
  17.                 ans = mid;
  18.                 r = mid - 1;
  19.             }  else
  20.                 l = mid + 1;
  21.         }
  22.         return ans;
  23.     }
  24.  
  25.     public int subarraySumII(int[] A, int start, int end) {
  26.         // Write your code here
  27.         int len = A.length;
  28.         for (int i = 1; i <len; ++i)
  29.             A[i] += A[i-1];
  30.  
  31.         int cnt = 0;
  32.         for (int i = 0; i <len; ++i) {
  33.             if (A[i] >= start && A[i] <= end)
  34.                 cnt ++;
  35.             int l = A[i] - end;
  36.             int r = A[i] - start;
  37.             cnt += find(A, len, r+1) - find(A, len, l);
  38.         }
  39.         return cnt;
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment