HackerRankPro
1 import java.math.BigDecimal; 2 import java.math.RoundingMode; 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import static javafx.scene.input.KeyCode.F; 7 8 public class HackerRankPro { 9 public static void main(String[] args) { 10 ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<>(); 11 ArrayList<Integer> integers = new ArrayList<>(); 12 integers.add(1); 13 integers.add(2); 14 integers.add(3); 15 arrayLists.add(integers); 16 ArrayList<Integer> integers1 = new ArrayList<>(); 17 integers1.add(4); 18 integers1.add(5); 19 integers1.add(6); 20 arrayLists.add(integers1); 21 ArrayList<Integer> integers2 = new ArrayList<>(); 22 integers2.add(7); 23 integers2.add(8); 24 integers2.add(9); 25 arrayLists.add(integers2); 26 // Integer i = diagonalDiferrence(arrayLists); 27 // System.out.println(i); 28 // squareMultiplyOutput(10); 30 ArrayList<Integer> integers3 = new ArrayList<>(); 31 integers3.add(-4); 32 integers3.add(3); 33 integers3.add(-9); 34 integers3.add(0); 35 integers3.add(4); 36 integers3.add(1); 38 // plusMinus(integers3); 40 staircase(4); 41 } 42 43 /** 44 * 获取方形矩阵两串对角线数字之和的差值 45 * 46 * 1 2 3 47 * 4 5 6 48 * 7 8 9 49 * 50 * 1+5+9=15; 51 * 3+5+7=15; 52 * 15-15=0; 53 * @param arr 54 * @return 55 */ 56 public static Integer diagonalDiferrence(ArrayList<ArrayList<Integer>> arr){ 57 if(arr==null){ 58 return null; 59 } 60 if (arr.isEmpty()){ 61 return null; 62 } 63 for (ArrayList<Integer> integers : arr) { 64 for (Integer integer : integers) { 65 if (integer<-100 || integer > 100){ 66 return null; 67 } 68 } 69 } 71 int count=0; 72 ArrayList<Integer> integerArrayList = new ArrayList<>(); 73 for (int i = 0; i < arr.size(); i++) { 74 ArrayList<Integer> integerList = arr.get(i); 75 for (int i1 = 0; i1 < integerList.size(); i1++) { 76 if(count==i1){ 77 Integer i2 = integerList.get(i1); 78 integerArrayList.add(i2); 79 break; 80 }else if (integerArrayList.size()==count){ 81 if (i1==(count-1)){ 82 Integer i2 = integerList.get(count); 83 integerArrayList.add(i2); 84 break; 85 }else { 86 continue; 87 } 88 }else { 89 break; 90 } 91 } 92 count++; 93 } 95 System.out.println(integerArrayList); 97 int count1=0; 98 ArrayList<Integer> integerArrayList1 = new ArrayList<>(); 99 for (int i = 0; i < arr.size(); i++) { 100 List<Integer> integerList = arr.get(i); 101 int reverseIndex=integerList.size()-1; 102 for (int i1 = integerList.size()-1; i1 >=0 ; i1--) { 103 if(count1==(integerList.size()-i1-1)){ 104 Integer i2 = integerList.get(i1); 105 integerArrayList1.add(i2); 106 break; 107 }else if (integerArrayList1.size()==count1){ 108 if (i1==(integerList.size()-count1-1)){ 109 Integer i2 = integerList.get(reverseIndex--); 110 integerArrayList1.add(i2); 111 break; 112 }else { 113 continue; 114 } 115 }else { 116 break; 117 } 118 } 119 count1++; 120 } 122 System.out.println(integerArrayList1); 124 int sum=0; 125 for (Integer integer : integerArrayList) { 126 sum+=integer; 127 } 128 int sum1=0; 129 for (Integer integer : integerArrayList1) { 130 sum1+=integer; 131 } 133 int minersVal=sum-sum1; 134 if (minersVal<0){ 135 int i = sum1 - sum; 136 return i; 137 } 139 return minersVal; 140 } 141 142 public static void squareMultiplyOutput(int num){ 143 if (num<2 || num >20){ 144 return; 145 } 147 for (int i = 0; i < 10; i++) { 148 int index=i+1; 149 int i1 = num * index; 150 System.out.println(" "+num+" *"+" " +index+" "+"= "+""+i1+""); 152 } 153 } 154 155 public static void plusMinus(List<Integer> arr){ 156 if (arr==null){ 157 return; 158 } 159 if (arr.isEmpty()){ 160 return; 161 } 162 if (arr.size()<0 || arr.size()>100){ 163 return; 164 } 165 arr.forEach(e->{ 166 if (e<-100 || e>100){ 167 return; 168 } 169 }); 171 ArrayList<Integer> negtiveIntegers = new ArrayList<>(); 172 ArrayList<Integer> positiveIntegers = new ArrayList<>(); 173 ArrayList<Integer> zeroIntegers = new ArrayList<>(); 174 for (Integer integer : arr) { 175 if (integer<0){ 176 negtiveIntegers.add(integer); 177 } 178 else if (integer>0){ 179 positiveIntegers.add(integer); 180 }else { 181 zeroIntegers.add(integer); 182 } 183 } 185 int size = zeroIntegers.size(); 186 String s = size + ".000000"; 187 BigDecimal bigDecimal5 = new BigDecimal(s); 188 bigDecimal5.setScale(6,RoundingMode.HALF_UP); 189 int size1 = arr.size(); 190 String s1 = size1 + ".000000"; 191 BigDecimal bigDecimal = new BigDecimal(s1); 192 bigDecimal.setScale(6,RoundingMode.HALF_UP); 193 BigDecimal divide = bigDecimal5.divide(bigDecimal,6,RoundingMode.HALF_UP); 195 int size2 = positiveIntegers.size(); 196 String s2 = size2 + ".000000"; 197 BigDecimal bigDecimal1 = new BigDecimal(s2); 198 bigDecimal1.setScale(6,RoundingMode.HALF_UP); 199 BigDecimal divide1 = bigDecimal1.divide(bigDecimal, 6, RoundingMode.HALF_UP); 201 int size3 = negtiveIntegers.size(); 202 String s3 = size3 + ".000000"; 203 BigDecimal bigDecimal2 = new BigDecimal(s3); 204 BigDecimal divide2 = bigDecimal2.divide(bigDecimal, 6, RoundingMode.HALF_UP); 206 System.out.println(divide1); 207 System.out.println(divide2); 208 System.out.println(divide); 209 } 210 211 public static void staircase(int n){ 212 if(n<=0 || n>100){ 213 return; 214 } 216 int count=0; 217 int N=n; 218 int index=0; 219 for (int i = n-1; i >= 0; i--) { 220 if (count<(n-1)){ 221 System.out.print(" "); 222 count++; 223 continue; 224 } 225 count=0; 226 n--; 227 for (int j = 0; j < n; j++) { 228 if (index<(N-n)){ 229 System.out.print("#"); 230 index++; 231 continue; 232 } 233 } 234 } 235 } 236 }