Guest User

Untitled

a guest
Feb 19th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. class Solution {
  2.  
  3. public boolean canJump(int[] nums) {
  4.  
  5. if(nums.length == 1)
  6. return true;
  7.  
  8. HashMap<Integer, ArrayList<Integer>> graph = new HashMap<Integer, ArrayList<Integer>>();
  9.  
  10. for(Integer i = 0; i < nums.length; i++) {
  11.  
  12. ArrayList<Integer> edges = new ArrayList<Integer>();
  13.  
  14. int jumps = nums[i];
  15.  
  16. if (jumps != 0) {
  17. for(Integer j = 1; j <= jumps; j++) {
  18. edges.add(i+j);
  19. }
  20. } else {
  21. edges.add(-1);
  22. }
  23.  
  24. graph.put(i, edges);
  25. }
  26.  
  27. //we have our graph ready
  28.  
  29. Integer target = nums.length - 1;
  30. System.out.println("target is : " + target);
  31.  
  32. HashSet<Integer> visited = new HashSet<Integer>();
  33.  
  34.  
  35. Queue<Integer> queue = new LinkedList<Integer>();
  36. queue.add(0);
  37.  
  38. while(!queue.isEmpty()) {
  39. System.out.println("queue " + queue.peek());
  40. visited.add(queue.peek());
  41. ArrayList<Integer> edges = graph.get(queue.poll());
  42.  
  43. System.out.println("edges is : " + edges);
  44.  
  45. for(Integer edge : edges) {
  46.  
  47. if(!visited.contains(edge)){
  48.  
  49. if (edge == target) {
  50. return true;
  51. }
  52.  
  53. if(!queue.contains(edge) && edge > 0){
  54. queue.add(edge);
  55. }
  56. }
  57. }
  58.  
  59. }
  60.  
  61. return false;
  62.  
  63. }
  64.  
  65. }
Add Comment
Please, Sign In to add comment