Related Articles

# Minimum length of jumps to avoid given array of obstacles

• Difficulty Level : Easy
• Last Updated : 27 May, 2021

We are given coordinates of obstacles on a straight line. We start jumping from point 0, we need to reach the end, avoiding all obstacles. The length of every jump has to be the same (For example, if we jump from 0 to 4, then we must make the next jump from 4 to 8). We need to find the minimum length of the jump so that we can reach the end and we avoid all obstacles.

Examples:

```Input : obs[] = [5, 3, 6, 7, 9]
Output : 4
Obstacles are at points 3, 5, 6, 7 and 9
We jump from 0 to 4, then 4 to 8, then 4
to 12. This is how we reach end with jumps
of length 4. If we try lower jump lengths,
we cannot avoid all obstacles.

Input : obs[] = [5, 8, 9, 13, 14]
Output : 6 ```

We insert the locations of all obstacles in a hash table. We also find the maximum value of the obstacle. Then we tried all possible jump sizes from 1 to maximum. If any jump size leads to an obstacle, we do not consider that jump.

## CPP

 `// C++ program to find length of a jump``// to reach end avoiding all obstacles``#include ``#define mod 1000000007``using` `namespace` `std;` `int` `avoidObstacles(unordered_set<``int``> obs)``{` `    ``// set jump distance to 1``    ``int` `jump_dist = 1;` `    ``// flag to check if current jump distance``    ``// hits an obstacle``    ``bool` `obstacle_hit = ``true``;` `    ``while``(obstacle_hit)``    ``{` `        ``obstacle_hit = ``false``;``        ``jump_dist += 1;` `        ``// checking if jumping with current length``        ``// hits an obstacle``        ``for` `(``auto` `i:obs)``        ``{``            ``if` `(i % jump_dist == 0)``            ``{` `                ``// if obstacle is hit repeat process``                ``// after increasing jump distance``                ``obstacle_hit = ``true``;``                ``break``;``            ``}``            ``}``        ``}` `    ``return` `jump_dist;``}` `// Driver Code``int` `main()``{``    ``unordered_set<``int``> a = {5, 3, 6, 7, 9};``    ``int` `b = avoidObstacles(a);``    ``cout << b;``}` `// This code is contributed by mohit kumar 29`

## Java

 `// Java program to find length of a jump``// to reach end avoiding all obstacles``import` `java.util.*;` `public` `class` `obstacle {``    ``static` `int` `avoidObstacles(``int``[] obs)``    ``{``        ``// Insert all array elements in a hash table``        ``// and find the maximum value in the array``        ``HashSet hs = ``new` `HashSet();``        ``int` `max = obs[``0``];``        ``for` `(``int` `i=``0``; i max)``                ``return` `i;        ``        ``}` `        ``return` `max+``1``;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `a[] = ``new` `int``[] { ``5``, ``3``, ``6``, ``7``, ``9` `};``        ``int` `b = avoidObstacles(a);``        ``System.out.println(b);``    ``}``}`

## Python3

 `# Python3 program to find length of a jump``# to reach end avoiding all obstacles``def` `avoidObstacles(obs):``    ` `    ``# sort the list in ascending order``    ``obs ``=` `sorted``(obs)``    ` `    ``# set jump distance to 1``    ``jump_dist ``=` `1``    ` `    ``# flag to check if current jump distance``    ``# hits an obstacle``    ``obstacle_hit ``=` `True` `    ``while``(obstacle_hit):``        ` `        ``obstacle_hit ``=` `False``        ``jump_dist ``+``=` `1``        ` `        ``# checking if jumping with current length``        ``# hits an obstacle``        ``for` `i ``in` `range``(``0``, ``len``(obs)):``            ``if` `obs[i] ``%` `jump_dist ``=``=` `0``:``                ` `                ``# if obstacle is hit repeat process``                ``# after increasing jump distance``                ``obstacle_hit ``=` `True``                ``break` `    ``return` `jump_dist``    ` `# Driver Code``a ``=` `[``5``, ``3``, ``6``, ``7``, ``9``]``b ``=` `avoidObstacles(a)``print``(b)` `# This code is contributed by ViratJoshi`

## C#

 `// C# program to find length of a jump``// to reach end avoiding all obstacles``using` `System;``using` `System.Collections.Generic;` `public` `class` `obstacle``{``    ``static` `int` `avoidObstacles(``int``[] obs)``    ``{``        ``// Insert all array elements in a hash table``        ``// and find the maximum value in the array``        ``HashSet<``int``> hs = ``new` `HashSet<``int``>();``        ``int` `max = obs;``        ``for` `(``int` `i = 0; i < obs.Length; i++)``        ``{``            ``hs.Add(obs[i]);``            ``max = Math.Max(max, obs[i]);``        ``}` `        ``// checking for every possible length which``        ``// yield us solution``        ``for` `(``int` `i = 1; i <= max; i++)``        ``{``            ``int` `j;``            ``for` `(j = i; j <= max; j = j + i)``            ``{` `                ``// if there is obstacle, break the loop.``                ``if` `(hs.Contains(j))``                    ``break``;``            ``}` `            ``// If above loop did not break``            ``if` `(j > max)``                ``return` `i;        ``        ``}``        ``return` `max+1;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `Main()``    ``{``        ``int` `[]a = ``new` `int``[] { 5, 3, 6, 7, 9 };``        ``int` `b = avoidObstacles(a);``        ``Console.WriteLine(b);``    ``}``}` `// This code is contributed by 29AjayKumar`

## Javascript

 ``
Output:
`4`

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up