diff --git a/src/main/java/com/thealgorithms/prefixsum/prefixsum.java b/src/main/java/com/thealgorithms/prefixsum/prefixsum.java new file mode 100644 index 000000000000..9b5c3205b142 --- /dev/null +++ b/src/main/java/com/thealgorithms/prefixsum/prefixsum.java @@ -0,0 +1,28 @@ +package com.thealgorithms.prefixsum; + +class prefixsum { + int[] prefix; + public prefixsum(int[] nums) { + int n = nums.length; + prefix = new int[n]; + int cur = 0; + for (int i = 0; i < n; i++) { + cur += nums[i]; + prefix[i] = cur; + } + } + public int sumRange(int left, int right) { + if (left == 0) { + return prefix[right]; + } else { + return prefix[right] - prefix[left - 1]; + } + } + + public static void main(String[] args) { + int[] nums = { 1, 2, 3, 4 }; + prefixsum obj = new prefixsum(nums); + System.out.println(obj.sumRange(0, 2)); + System.out.println(obj.sumRange(1, 3)); + } +} diff --git a/src/main/java/com/thealgorithms/prefixsum/prefixsum1.java b/src/main/java/com/thealgorithms/prefixsum/prefixsum1.java new file mode 100644 index 000000000000..ffe6e90ef31f --- /dev/null +++ b/src/main/java/com/thealgorithms/prefixsum/prefixsum1.java @@ -0,0 +1,24 @@ +package com.thealgorithms.prefixsum; + +class Solution { + public int minSubArrayLen(int target, int[] nums) { + int currentsum = 0; + int low = 0; + int high = 0; + + int minlenwindow = Integer.MAX_VALUE; + + for (high = 0; high < nums.length; high++) { + currentsum += nums[high]; + + while (currentsum >= target) { + int currentwindow = high - low + 1; + minlenwindow = Math.min(minlenwindow, currentwindow); + currentsum = currentsum - nums[low]; + low++; + } + } + + return minlenwindow == Integer.MAX_VALUE ? 0 : minlenwindow; + } +}