We are given coordinates of obstacles on a straight line. We start jumping from point 0, we need to reach end avoiding all obstacles. Length of every jump has to be same (For example, if we jump from 0 to 4, then we must make next jump from 4 to 8). We need to find the minimum length of jump so that we can reach 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 locations of all obstacles in a hash table. We also find maximum value of obstacle. Then we try all possible jump sizes from 1 to maximum. If any jump size leads to a obstacle, we do not consider that jump.

## CPP

`// C++ program to find length of a jump ` `// to reach end avoiding all obstacles ` `#include <bits/stdc++.h> ` `#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<Integer> hs = ` `new` `HashSet<Integer>(); ` ` ` `int` `max = obs[` `0` `]; ` ` ` `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(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[0]; ` ` ` `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 ` |

**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.