Problem:
Given an array of integers, which can contain both +ve and -ve numbers, you have to maximize the product of any 3 elements of the array and print that out.
The elements can be non- contiguous. If size of array is less than 3 then answer will be 0.
Input:
Input will consist of two lines. First line will consist of n i.e, size of array. Next line will contain comma separated numbers.
Constraints:
0≤n≤10000
−1290≤A[i]≤1290
Note: Input will always have exact 2 lines. And all correct integers will be provided which will not generate any parse exception. The second line will always have correct number of elements, the count of which is given in first line.
Output:
Print the maximum product. Don’t print the elements.
SAMPLE INPUT
6
-5 -7 4 2 1 9
SAMPLE OUTPUT
315
Explanation
Maximum product is -5 * -7 *9 = 315
Another case:
Input array: 4,5,-19,3
Maximum product is 3 * 4 * 5 = 60
Solution:
package com.dineshonjava.algo; import java.util.Arrays; import java.util.Scanner; public class ProductMaximization { private static Scanner sc; public static void main(String[] args) { sc = new Scanner(System.in); int n = sc.nextInt(); int [] arr = new int [n]; for(int i = 0; i < n ; i++){ arr [i] = sc.nextInt(); } productMaximize(n, arr); } private static void productMaximize(int n, int[] arr) { if(n < 3){ System.out.println(0); }else{ Arrays.sort(arr); int max = 0; if(arr[0] < 0 && arr[1] < 0){ if(Math.abs(arr[0]) >= arr[n-1] || Math.abs(arr[0]) >= arr[n-2]){ max = arr[0]*arr[1]*arr[n-1]; }else{ max = arr[n-3]*arr[n-2]*arr[n-1]; } }else{ max = arr[n-3]*arr[n-2]*arr[n-1]; } System.out.println(max); } } }
This program may not be solve all test cases but I have run 10-12 test cases which is running fine. So please suggest anyone if you have another better way to solve this problem.
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…