Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. package com.company;
  2.  
  3. import org.junit.Test;
  4.  
  5. import java.util.ArrayList;
  6. import java.util.Collections;
  7.  
  8. /**
  9. * Created by rajan on 21-01-2017.
  10. **/
  11. public class SpiralMatrixTraversal {
  12. public static void main(String[] args) {
  13. int[][] arr={
  14. {1,2,3},
  15. {7,8,9}
  16. };
  17.  
  18. int[][] arr2={{1}};
  19. ArrayList<Integer> ans= findSpiral(arr);
  20. for(int i: ans)
  21. {
  22. System.out.println(i);
  23. }
  24. }
  25.  
  26. public static void TraverseList(ListNode head)
  27. {
  28. if(head==null) return;
  29. ListNode temp=head;
  30. while(temp!=null) {
  31. System.out.println(temp.data);
  32. temp = temp.next;
  33. }
  34. }
  35.  
  36. public static ArrayList<Integer> findSpiral(int[][] arr) {
  37.  
  38. ArrayList<Integer> ans =new ArrayList<>();
  39.  
  40. int row_min=0;
  41. int col_min=0;
  42.  
  43. int row_max =arr.length -1; //Number of rows
  44. int col_max =arr[0].length -1; //number of columns
  45.  
  46. int row_pos=0;
  47. int col_pos=0;
  48.  
  49. while(row_min<=row_max && col_min<=col_max)
  50. {
  51. if(row_pos==row_min && col_pos==col_min) //Upper left
  52. {
  53. while(col_pos<=col_max)
  54. {
  55. ans.add(arr[row_pos][col_pos]);
  56. col_pos+=1;
  57. }
  58. col_pos-=1;
  59.  
  60. row_pos+=1;
  61. row_min+=1;
  62. }
  63. else if(row_pos==row_max && col_pos==col_max) //Lower Right
  64. {
  65. while(col_pos>=col_min)
  66. {
  67. ans.add(arr[row_pos][col_pos]);
  68. col_pos-=1;
  69. }
  70. col_pos+=1;
  71. row_pos-=1;
  72. row_max-=1;
  73. }
  74. else if(row_pos==row_min && col_pos==col_max) //Upper right
  75. {
  76. while(row_pos<=row_max)
  77. {
  78. ans.add(arr[row_pos][col_pos]);
  79. row_pos+=1;
  80. }
  81. row_pos-=1;
  82. col_pos-=1;
  83. col_max-=1;
  84. }
  85. else if(row_pos==row_max && col_pos==col_min) //Lower left
  86. {
  87. while(row_pos>=row_min)
  88. {
  89. ans.add(arr[row_pos][col_pos]);
  90.  
  91. row_pos-=1;
  92. }
  93. row_pos+=1;
  94. col_pos+=1;
  95. col_min+=1;
  96. }
  97. }
  98. return ans;
  99. }
  100.  
  101. @Test
  102. public void test1()
  103. {
  104. int[][] arr={{1}};
  105. ArrayList<Integer>al=new ArrayList<>();
  106. Integer[] ans={1};
  107. Collections.addAll(al,ans);
  108.  
  109. org.junit.Assert.assertEquals(al,findSpiral(arr));
  110. }
  111.  
  112. @Test
  113. public void test2()
  114. {
  115. int[][] arr={
  116. {1,2},
  117. {4,5},
  118. };
  119. ArrayList<Integer>al=new ArrayList<>();
  120. Integer[] ans={1,2,5,4};
  121. Collections.addAll(al,ans);
  122.  
  123. org.junit.Assert.assertEquals(al,findSpiral(arr));
  124. }
  125.  
  126. @Test
  127. public void test3()
  128. {
  129. int[][] arr={
  130. {1,2,3},
  131. {4,5,6},
  132. {7,8,9}
  133. };
  134. ArrayList<Integer>al=new ArrayList<>();
  135. Integer[] ans={1,2,3,6,9,8,7,4,5};
  136. Collections.addAll(al,ans);
  137.  
  138. org.junit.Assert.assertEquals(al,findSpiral(arr));
  139. }
  140.  
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement