Advertisement
ChiragLulla

Untitled

Jul 30th, 2022
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.74 KB | None | 0 0
  1. class Solution {
  2.     public int minSubArrayLen(int target, int[] nums) {
  3.         int len = nums.length;
  4.         int ans = Integer.MAX_VALUE;
  5.         int[] sums = new int[nums.length+1];
  6.         sums[0] = 0;
  7.         for(int i = 1; i <= len; i++) {
  8.             sums[i] = sums[i-1] + nums[i-1];
  9.         }
  10.         // System.out.println(" 0, 1, 2, 3, 4, 5 ");
  11.         // System.out.println(Arrays.toString(sums));
  12.         for(int i = 1; i <= len; i++) {
  13.             // O(n)
  14. //             for(int j = i; j < len; j++) {
  15. //                 int sum = 0;
  16. //                 if(i == 0) {
  17. //                     sum = sums[j];
  18. //                 }else{
  19. //                     sum = sums[j] - sums[i-1];
  20. //                 }
  21.                
  22. //                 if(sum >= target) {
  23. //                     // System.out.println(i + "-->" + j);
  24. //                     ans = Math.min(ans, (j-i+1));
  25. //                     break;
  26. //                 }
  27. //             }
  28.            
  29.             // O(logn)
  30.            
  31.             int start = i, end = sums.length-1, mid = -1, currSum = -1;
  32.            
  33.             while(start <= end) {
  34.                 // System.out.println(start + " " + end);
  35.                 mid = (start + end) / 2;
  36.                 // System.out.println(mid);
  37.                 currSum = sums[mid] - sums[i-1];
  38.                 // System.out.println(currSum);
  39.                 if(currSum >= target) {
  40.                     ans = Math.min(ans, mid - (i - 1));
  41.                     // System.out.println(ans);
  42.                     end = mid - 1;
  43.                 }else if(currSum < target) {
  44.                     start = mid + 1;
  45.                 }
  46.             }
  47.         }
  48.        
  49.         return ans != Integer.MAX_VALUE ? ans : 0;
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement