Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public boolean canJump(int[] nums) {
- if(nums.length == 1)
- return true;
- HashMap<Integer, ArrayList<Integer>> graph = new HashMap<Integer, ArrayList<Integer>>();
- for(Integer i = 0; i < nums.length; i++) {
- ArrayList<Integer> edges = new ArrayList<Integer>();
- int jumps = nums[i];
- if (jumps != 0) {
- for(Integer j = 1; j <= jumps; j++) {
- edges.add(i+j);
- }
- } else {
- edges.add(-1);
- }
- graph.put(i, edges);
- }
- //we have our graph ready
- Integer target = nums.length - 1;
- System.out.println("target is : " + target);
- HashSet<Integer> visited = new HashSet<Integer>();
- Queue<Integer> queue = new LinkedList<Integer>();
- queue.add(0);
- while(!queue.isEmpty()) {
- System.out.println("queue " + queue.peek());
- visited.add(queue.peek());
- ArrayList<Integer> edges = graph.get(queue.poll());
- System.out.println("edges is : " + edges);
- for(Integer edge : edges) {
- if(!visited.contains(edge)){
- if (edge == target) {
- return true;
- }
- if(!queue.contains(edge) && edge > 0){
- queue.add(edge);
- }
- }
- }
- }
- return false;
- }
- }
Add Comment
Please, Sign In to add comment