The solution to this problem can be thought of as a bfs traversal. We can have two variables that indicate the boundaries, namely currentBoundary and nextBoundary. We also store a variable to denote the maximum index that we can reach from a particular level.

Whenever the index crosses the currentBoundary, we increase the number of steps by 1. If we continue iteration like this till the end of the array, we will have the minimum number of steps required to jump to the final index. Here is my accepted code

```
public int jump(int[] nums) {
if(nums.length <= 1){
return 0;
}
int currentBoundary = 0;
int nextBoundary = 0;
int steps = 0;
for(int i=0;i < nums.length;i++ ){
if(i > currentBoundary){
currentBoundary = nextBoundary;
++steps;
}
if(i+nums[i] > nextBoundary){
nextBoundary = i+nums[i];
}
}
return steps;
}
```