HackerRankPro

coderlwz發表於2024-09-15
  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);
 29 
 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);
 37 
 38 //        plusMinus(integers3);
 39 
 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         }
 70 
 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         }
 94 
 95         System.out.println(integerArrayList);
 96 
 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         }
121 
122         System.out.println(integerArrayList1);
123 
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         }
132 
133         int minersVal=sum-sum1;
134         if (minersVal<0){
135             int i = sum1 - sum;
136             return i;
137         }
138 
139         return minersVal;
140     }
141 
142     public static void squareMultiplyOutput(int num){
143         if (num<2 || num >20){
144             return;
145         }
146 
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+"");
151 
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         });
170 
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         }
184 
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);
194 
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);
200 
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);
205 
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         }
215 
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 }