Let A be a non-empty array consisting of N integers.
The abs sum of two for a pair of indices (P, Q) is the absolute value |A[P] + A[Q]|, for 0 ≤ P ≤ Q < N.
For example, the following array A:
A[0] = 1 A[1] = 4 A[2] = -3has pairs of indices (0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2).
The abs sum of two for the pair (0, 0) is A[0] + A[0] = |1 + 1| = 2.
The abs sum of two for the pair (0, 1) is A[0] + A[1] = |1 + 4| = 5.
The abs sum of two for the pair (0, 2) is A[0] + A[2] = |1 + (−3)| = 2.
The abs sum of two for the pair (1, 1) is A[1] + A[1] = |4 + 4| = 8.
The abs sum of two for the pair (1, 2) is A[1] + A[2] = |4 + (−3)| = 1.
The abs sum of two for the pair (2, 2) is A[2] + A[2] = |(−3) + (−3)| = 6.
Write a function:
class Solution { public int solution(int[] A); }
that, given a non-empty array A consisting of N integers, returns the minimal abs sum of two for any pair of indices in this array.
For example, given the following array A:
A[0] = 1 A[1] = 4 A[2] = -3the function should return 1, as explained above.
Given array A:
A[0] = -8 A[1] = 4 A[2] = 5 A[3] =-10 A[4] = 3the function should return |(−8) + 5| = 3.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..100,000];
- each element of array A is an integer within the range [−1,000,000,000..1,000,000,000].
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int left = 0;
int right = A.length - 1;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int left = 0;
int right = A.length - 1;
Arrays.sort(A);
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int left = 0;
int right = A.length - 1;
Arrays.sort(A);
while ()
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int left = 0;
int right = A.length - 1;
Arrays.sort(A);
while () {
if (Math.abs())
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while () {
if (Math.abs(A[p] + A[q]))
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while () {
if (Math.abs(A[p] + A[q]))
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while () {
if (min > Math.abs(A[p] + A[q])) min =
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while () {
if (min > Math.abs(A[p] + A[q])) min = Math.abs(A[p] + A[q]);
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while () {
int current = Math.abs(A[p] + A[q]);
if (min > current) min = current;
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
while () {
int current = Math.abs(A[p] + A[q]);
if (min > current) min = current;
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
while (p <) {
int current = Math.abs(A[p] + A[q]);
if (min > current) min = current;
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
if (min > current) min = current;
p++;
}
retu
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
if (min > current) min = current;
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
m min = current;
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
while (p <= q) { // the other way of for loop
min = Math.min(min, Math.abs(A[p] + A[q]));
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
while (p <= q) { // the other way of for loop
min = Math.min(min, Math.abs(A[p] + A[q]));
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while (p <= q) { // the other way of for loop
min = Math.min(min, Math.abs(A[p] + A[q]));
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -3 1 4
while (p <= q) { // the other way of for loop
min = Math.min(min, Math.abs(A[p] + A[q]));
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -3 1 4
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -3 1 4
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -3 1 4
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -3 1 4
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
//
if ()
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -3 1 4
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current <= 0) p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -10 -8 3 4 5
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current <= 0) p++;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -10 -8 3 4 5
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current <= 0) p++;
else q--;
}
return min;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -10 -8 3 4 5
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current <= 0) p++;
else q--;
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -10 -8 3 4 5
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current <= 0) p++;
else q--;
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -10 -8 3 4 5
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current <= 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -10 -8 3 4 5
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current <= 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -10 -8 3 4 5
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current < 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A); // -10 -8 3 4 5
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current < 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current < 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while (p <= q) { // the other way of for loop
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current < 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while (p <= q) { // the other way of for loop
int current = A[p] + A[q];
int current = Math.abs(A[p] + A[q]);
min = Math.min(min, current);
// caterpillar method
if (current < 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while (p <= q) { // the other way of for loop
int current = A[p] + A[q];
min = Math.min(min, Math.abs(current));
// caterpillar method
if (current < 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while (p <= q) { // the other way of for loop
int current = A[p] + A[q];
min = Math.min(min, Math.abs(current));
// caterpillar method
if (current < 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while (p <= q) { // the other way of for loop
int current = A[p] + A[q];
min = Math.min(min, Math.abs(current));
// caterpillar method
if (current < 0) p++; // -
else q--; // +
}
return min;
}
}
import java.util.Arrays;
import java.lang.Math;
class Solution {
public int solution(int[] A) {
int min = Integer.MAX_VALUE;
int p = 0;
int q = A.length - 1;
Arrays.sort(A);
while (p <= q) { // the other way of for loop
int current = A[p] + A[q];
min = Math.min(min, Math.abs(current));
// caterpillar method
if (current < 0) p++; // -
else q--; // +
}
return min;
}
}
The solution obtained perfect score.