Untitled

 avatar
unknown
java
a year ago
2.3 kB
124
Indexable
import java.util.Scanner;
import java.util.Arrays;
class Main {
    public static void main(String[] args) {
        // int[] arr = {2,4,8,11,12,14};

        // int[] ans = twoSum(arr,15);
        // System.out.println(ans[0] + " " + ans[1]);

        int[] nums = {2,4,7,9,12,14};

        threeSum(nums, 23);
    }

    public int maxArea(int[] height) {
        int n = height.length;

        int maxArea = 0;

        for(int i=0; i<n; i++){
            for(int j=i+1; j<n; j++){
                int h = Math.min(height[i], height[j]);

                int w = j - i;

                int currArea = h*w;

                if(currArea > maxArea){
                    maxArea = currArea;
                }
            }
        }

        return maxArea;
    }

    public int maxArea2(int[] height) {
        int n = height.length;

        int l = 0;
        int r = n-1;
        int maxArea = 0;

        while(l < r){
           int h = Math.min(height[l], height[r]);
           int w = r - l;

           int currArea = h*w;

           if(currArea > maxArea){
                maxArea = currArea;
           }

           if(height[l] < height[r]){
                l++; 
           } else {
                r--;
           }
        }

        return maxArea;
    }

    public static int[] twoSum(int[] nums, int target) {
        int n = nums.length;

        int l = 0;
        int r = n-1;

        while(l < r){
            int csum = nums[l] + nums[r];

            if(csum == target){
                return new int[]{l,r};
            } else if(csum < target){
                l++;
            } else {
                r--;
            }
        }

        return new int[]{};
    }

    public static void threeSum(int[] nums, int target) {
        Arrays.sort(nums);
        int n = nums.length;

        for(int i=0; i<n; i++){
            int newTar = target - nums[i];

            int l = i + 1;
            int r = n - 1;

            while(l < r){
                int csum = nums[l] + nums[r];

                if(csum == newTar){
                    System.out.println("Triplet is " + nums[i] + "," + nums[l] + "," + nums[r]);
                    l++;
                } else if(csum < newTar){
                    l++;
                } else {
                    r--;
                }
            }
        }
    }
}
Editor is loading...
Leave a Comment