diff --git a/src/main/scala/Array/MaximumAbsoluteDifference.scala b/src/main/scala/Array/MaximumAbsoluteDifference.scala new file mode 100644 index 0000000..29a8ce7 --- /dev/null +++ b/src/main/scala/Array/MaximumAbsoluteDifference.scala @@ -0,0 +1,30 @@ +package Array + +object MaximumAbsoluteDifference { + + /** + * You are given an array of N integers. Return maximum value for all 1 ≤ i, j ≤ N, + which is defined as |array[i] - array[j]| + |i - j|, where |x| denotes absolute value of x. + * + * @param Array[Int] + * @return + */ + + def maxAbsDiff(array : Array[Int]): Int = { + + var maximum_sum = Int.MinValue + var maximum_difference = Int.MinValue + var minimum_sum = Int.MaxValue + var minimum_difference = Int.MaxValue + for (i <- array.indices) { + val value = array(i) + sum(i) = value + i + difference(i) = ai - i + } + + Math.max( + sum.max - sum.min, + Math.abs(difference.max - difference.min) + ) + } +} diff --git a/src/main/scala/Array/MinimumStepInInfiniteGrid.scala b/src/main/scala/Array/MinimumStepInInfiniteGrid.scala new file mode 100644 index 0000000..18daaf1 --- /dev/null +++ b/src/main/scala/Array/MinimumStepInInfiniteGrid.scala @@ -0,0 +1,21 @@ +package Array + +object MinimumStepInInfiniteGrid { + + /** + * Method returns minimum numbers of steps + * + * @param Array[Int], @param Array[Int] + * @return + */ + + def minimumSteps(x_coordinate: Array[Int], y_coordinate: Array[Int]): Int = { + var steps = 0 + for (i <- 1 until x.coordinate.length) { + val x_direction = math.abs(x_coordinate(i) - x_coordinate(i - 1)) + val y_direction = math.abs(y_coordinate(i) - y_coordinate(i - 1)) + steps = steps + math.max(x_direction, y_direction) + } + steps + } +} diff --git a/src/test/scala/Array/MinimumStepInInfiniteGridSpec.scala b/src/test/scala/Array/MinimumStepInInfiniteGridSpec.scala new file mode 100644 index 0000000..4df0588 --- /dev/null +++ b/src/test/scala/Array/MinimumStepInInfiniteGridSpec.scala @@ -0,0 +1,15 @@ +package Array + +import org.scalatest.FlatSpec + +class MinimumStepInInfiniteGridSpec { + + "Minimum Step In Infinite Grid should return the minimum number of steps taken to follow the given coordinates" in { + assert(MinimumStepInInfiniteGrid.minimumSteps(Array(0, 1, 1), Array(0, 1, 2)) === 2 + } + + "Minimum Step In Infinite Grid should return the minimum number of steps taken to follow the given coordinates" in { + assert(MinimumStepInInfiniteGrid.minimumSteps(Array(0, 1, 7, 9), Array(1, 1, 1, 6)) === 12 + } + +}