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