File tree 3 files changed +125
-0
lines changed
main/java/com/fishercoder/solutions
test/java/com/fishercoder
3 files changed +125
-0
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ _If you like this project, please leave me a star._ ★
8
8
9
9
| # | Title | Solutions | Video | Difficulty | Tag
10
10
|-----|----------------|---------------|--------|-------------|-------------
11
+ | 1558| [ Minimum Numbers of Function Calls to Make Target Array] ( https://leetcode.com/problems/minimum-numbers-of-function-calls-to-make-target-array/ ) | [ Solution] ( ../master/src/main/java/com/fishercoder/solutions/_1558.java ) || Medium| Greedy|
11
12
| 1557| [ Minimum Number of Vertices to Reach All Nodes] ( https://leetcode.com/problems/minimum-number-of-vertices-to-reach-all-nodes/ ) | [ Solution] ( ../master/src/main/java/com/fishercoder/solutions/_1557.java ) || Medium| Graph|
12
13
| 1556| [ Thousand Separator] ( https://leetcode.com/problems/thousand-separator/ ) | [ Solution] ( ../master/src/main/java/com/fishercoder/solutions/_1556.java ) || Easy| String|
13
14
| 1551| [ Minimum Operations to Make Array Equal] ( https://leetcode.com/problems/minimum-operations-to-make-array-equal/ ) | [ Solution] ( ../master/src/main/java/com/fishercoder/solutions/_1551.java ) | [ :tv : ] ( https://youtu.be/A-i2sxmBqAA ) | Medium| Math|
Original file line number Diff line number Diff line change
1
+ package com .fishercoder .solutions ;
2
+
3
+ import java .util .Arrays ;
4
+
5
+ public class _1558 {
6
+ public static class Solution1 {
7
+ public int minOperations (int [] nums ) {
8
+ Arrays .sort (nums );
9
+ int ops = 0 ;
10
+ while (!allZero (nums )) {
11
+ if (allEvenAndNonZeroes (nums )) {
12
+ nums = half (nums );
13
+ ops ++;
14
+ } else if (hasOdds (nums )) {
15
+ int [] result = new int [nums .length ];
16
+ for (int i = 0 ; i < nums .length ; i ++) {
17
+ if (nums [i ] % 2 != 0 ) {
18
+ result [i ] = nums [i ] - 1 ;
19
+ ops ++;
20
+ } else {
21
+ result [i ] = nums [i ];
22
+ }
23
+ }
24
+ nums = result ;
25
+ } else {
26
+ int [] result = new int [nums .length ];
27
+ for (int i = 0 ; i < nums .length ; i ++) {
28
+ if (nums [i ] != 0 ) {
29
+ result [i ] = nums [i ] / 2 ;
30
+ } else {
31
+ result [i ] = nums [i ];
32
+ }
33
+ }
34
+ nums = result ;
35
+ ops ++;
36
+ }
37
+ }
38
+ return ops ;
39
+ }
40
+
41
+ private boolean hasOdds (int [] nums ) {
42
+ for (int i : nums ) {
43
+ if (i % 2 != 0 ) {
44
+ return true ;
45
+ }
46
+ }
47
+ return false ;
48
+ }
49
+
50
+ private int [] half (int [] nums ) {
51
+ int [] result = new int [nums .length ];
52
+ for (int i = 0 ; i < nums .length ; i ++) {
53
+ result [i ] = nums [i ] / 2 ;
54
+ }
55
+ return result ;
56
+ }
57
+
58
+ private boolean allEvenAndNonZeroes (int [] nums ) {
59
+ for (int i : nums ) {
60
+ if (i % 2 != 0 || i == 0 ) {
61
+ return false ;
62
+ }
63
+ }
64
+ return true ;
65
+ }
66
+
67
+ private boolean allZero (int [] nums ) {
68
+ for (int i : nums ) {
69
+ if (i != 0 ) {
70
+ return false ;
71
+ }
72
+ }
73
+ return true ;
74
+ }
75
+ }
76
+ }
Original file line number Diff line number Diff line change
1
+ package com .fishercoder ;
2
+
3
+ import com .fishercoder .solutions ._1558 ;
4
+ import org .junit .BeforeClass ;
5
+ import org .junit .Test ;
6
+
7
+ import static org .junit .Assert .assertEquals ;
8
+
9
+ public class _1558Test {
10
+ private static _1558 .Solution1 solution1 ;
11
+ private static int [] nums ;
12
+
13
+ @ BeforeClass
14
+ public static void setup () {
15
+ solution1 = new _1558 .Solution1 ();
16
+ }
17
+
18
+ @ Test
19
+ public void test1 () {
20
+ nums = new int []{1 , 5 };
21
+ assertEquals (5 , solution1 .minOperations (nums ));
22
+ }
23
+
24
+ @ Test
25
+ public void test2 () {
26
+ nums = new int []{2 , 2 };
27
+ assertEquals (3 , solution1 .minOperations (nums ));
28
+ }
29
+
30
+ @ Test
31
+ public void test3 () {
32
+ nums = new int []{4 , 2 , 5 };
33
+ assertEquals (6 , solution1 .minOperations (nums ));
34
+ }
35
+
36
+ @ Test
37
+ public void test4 () {
38
+ nums = new int []{3 , 2 , 2 , 4 };
39
+ assertEquals (7 , solution1 .minOperations (nums ));
40
+ }
41
+
42
+ @ Test
43
+ public void test5 () {
44
+ nums = new int []{2 , 4 , 8 , 16 };
45
+ assertEquals (8 , solution1 .minOperations (nums ));
46
+ }
47
+
48
+ }
You can’t perform that action at this time.
0 commit comments