From 43368377758690b962cbb654f597b8847852fee0 Mon Sep 17 00:00:00 2001 From: Aditi Agarwal <31546143+aditiagarwal34550@users.noreply.github.com> Date: Sat, 27 Jul 2019 16:48:20 +0530 Subject: [PATCH 1/4] =?UTF-8?q?You=20are=20given=20an=20array=20of=20N=20i?= =?UTF-8?q?ntegers.=20Return=20maximum=20value=20for=20all=201=20=E2=89=A4?= =?UTF-8?q?=20i,=20j=20=E2=89=A4=20N,=20=20=20=20=20=20=20=20=20which=20is?= =?UTF-8?q?=20defined=20as=20|array[i]=20-=20array[j]|=20+=20|i=20-=20j|,?= =?UTF-8?q?=20where=20|x|=20denotes=20absolute=20value=20of=20x.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Array/MaximumAbsoluteDifference.scala | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/main/scala/Array/MaximumAbsoluteDifference.scala 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) + ) + } +} From 2d8cb8e31d6292b50f874b993b6d72feea5f4e71 Mon Sep 17 00:00:00 2001 From: Aditi Agarwal <31546143+aditiagarwal34550@users.noreply.github.com> Date: Sat, 27 Jul 2019 17:43:48 +0530 Subject: [PATCH 2/4] Minimum Step In Infinite Grid You are in an infinite 2D grid where you can move in any of the 8 directions : (x,y), (x+1, y), (x - 1, y), (x, y+1), (x, y-1), (x-1, y-1), (x+1,y+1), (x-1,y+1), (x+1,y-1) You are given a sequence of points and the order in which you need to cover the points. Give the minimum number of steps in which you can achieve it. You start from the first point. --- .../Array/MinimumStepInInfiniteGrid.scala | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/scala/Array/MinimumStepInInfiniteGrid.scala diff --git a/src/main/scala/Array/MinimumStepInInfiniteGrid.scala b/src/main/scala/Array/MinimumStepInInfiniteGrid.scala new file mode 100644 index 0000000..cb29181 --- /dev/null +++ b/src/main/scala/Array/MinimumStepInInfiniteGrid.scala @@ -0,0 +1,19 @@ +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 + } +} From 6ef6ea330f2a245a9d0e792949b569f049dc2d9a Mon Sep 17 00:00:00 2001 From: Aditi Agarwal <31546143+aditiagarwal34550@users.noreply.github.com> Date: Sat, 27 Jul 2019 17:47:00 +0530 Subject: [PATCH 3/4] Minimum Step In Infinite Grid You are in an infinite 2D grid where you can move in any of the 8 directions : (x, y), (x +1, y), (x - 1, y), (x, y + 1), (x, y - 1), (x - 1, y - 1), (x + 1, y + 1), (x - 1,y + 1), (x + 1, y - 1) You are given a sequence of points and the order in which you need to cover the points. Give the minimum number of steps in which you can achieve it. You start from the first point. --- src/main/scala/Array/MinimumStepInInfiniteGrid.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/scala/Array/MinimumStepInInfiniteGrid.scala b/src/main/scala/Array/MinimumStepInInfiniteGrid.scala index cb29181..18daaf1 100644 --- a/src/main/scala/Array/MinimumStepInInfiniteGrid.scala +++ b/src/main/scala/Array/MinimumStepInInfiniteGrid.scala @@ -1,4 +1,6 @@ -Object MinimumStepInInfiniteGrid { +package Array + +object MinimumStepInInfiniteGrid { /** * Method returns minimum numbers of steps From 855eb6568cc4f7dd48ce477761c4227c09d97e21 Mon Sep 17 00:00:00 2001 From: Aditi Agarwal <31546143+aditiagarwal34550@users.noreply.github.com> Date: Sat, 27 Jul 2019 18:13:41 +0530 Subject: [PATCH 4/4] Create MinimumStepInInfiniteGridSpec.scala --- .../Array/MinimumStepInInfiniteGridSpec.scala | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/test/scala/Array/MinimumStepInInfiniteGridSpec.scala 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 + } + +}