File tree 6 files changed +149
-25
lines changed
solution/1300-1399/1342.Number of Steps to Reduce a Number to Zero
6 files changed +149
-25
lines changed Original file line number Diff line number Diff line change 48
48
<li><code>0 <= num <= 10^6</code></li>
49
49
</ul >
50
50
51
-
52
51
## 解法
53
52
54
53
<!-- 这里可写通用的实现逻辑 -->
60
59
<!-- 这里可写当前语言的特殊实现逻辑 -->
61
60
62
61
``` python
63
-
62
+ class Solution :
63
+ def numberOfSteps (self , num : int ) -> int :
64
+ res = 0
65
+ while num:
66
+ if (num & 1 ) == 0 :
67
+ num >>= 1
68
+ else :
69
+ num -= 1
70
+ res += 1
71
+ return res
64
72
```
65
73
66
74
### ** Java**
70
78
``` java
71
79
class Solution {
72
80
public int numberOfSteps (int num ) {
73
- int cnt = 0 ;
81
+ int res = 0 ;
74
82
while (num != 0 ) {
75
- if (num % 2 == 1 )
76
- num-- ;
77
- else
78
- num /= 2 ;
79
- cnt++ ;
83
+ if ((num & 1 ) == 0 ) {
84
+ num >> = 1 ;
85
+ } else {
86
+ -- num;
87
+ }
88
+ ++ res;
80
89
}
81
- return cnt ;
90
+ return res ;
82
91
}
83
92
}
84
93
```
85
94
95
+ ### ** C++**
96
+
97
+ ``` cpp
98
+ class Solution {
99
+ public:
100
+ int numberOfSteps(int num) {
101
+ int res = 0;
102
+ while (num)
103
+ {
104
+ if ((num & 1) == 0) num >>= 1;
105
+ else --num;
106
+ ++res;
107
+ }
108
+ return res;
109
+ }
110
+ };
111
+ ```
112
+
113
+ ### **Go**
114
+
115
+ ```go
116
+ func numberOfSteps(num int) int {
117
+ res := 0
118
+ for num != 0 {
119
+ if (num & 1) == 0 {
120
+ num >>= 1
121
+ } else {
122
+ num--
123
+ }
124
+ res++
125
+ }
126
+ return res
127
+ }
128
+ ```
129
+
86
130
### ** ...**
87
131
88
132
```
Original file line number Diff line number Diff line change @@ -47,35 +47,79 @@ Step 4) 1 is odd; subtract 1 and obtain 0.
47
47
<li><code>0 <= num <= 10^6</code></li>
48
48
</ul >
49
49
50
-
51
50
## Solutions
52
51
53
52
<!-- tabs:start -->
54
53
55
54
### ** Python3**
56
55
57
56
``` python
58
-
57
+ class Solution :
58
+ def numberOfSteps (self , num : int ) -> int :
59
+ res = 0
60
+ while num:
61
+ if (num & 1 ) == 0 :
62
+ num >>= 1
63
+ else :
64
+ num -= 1
65
+ res += 1
66
+ return res
59
67
```
60
68
61
69
### ** Java**
62
70
63
71
``` java
64
72
class Solution {
65
73
public int numberOfSteps (int num ) {
66
- int cnt = 0 ;
74
+ int res = 0 ;
67
75
while (num != 0 ) {
68
- if (num % 2 == 1 )
69
- num-- ;
70
- else
71
- num /= 2 ;
72
- cnt++ ;
76
+ if ((num & 1 ) == 0 ) {
77
+ num >> = 1 ;
78
+ } else {
79
+ -- num;
80
+ }
81
+ ++ res;
73
82
}
74
- return cnt ;
83
+ return res ;
75
84
}
76
85
}
77
86
```
78
87
88
+ ### ** C++**
89
+
90
+ ``` cpp
91
+ class Solution {
92
+ public:
93
+ int numberOfSteps(int num) {
94
+ int res = 0;
95
+ while (num)
96
+ {
97
+ if ((num & 1) == 0) num >>= 1;
98
+ else --num;
99
+ ++res;
100
+ }
101
+ return res;
102
+ }
103
+ };
104
+ ```
105
+
106
+ ### **Go**
107
+
108
+ ```go
109
+ func numberOfSteps(num int) int {
110
+ res := 0
111
+ for num != 0 {
112
+ if (num & 1) == 0 {
113
+ num >>= 1
114
+ } else {
115
+ num--
116
+ }
117
+ res++
118
+ }
119
+ return res
120
+ }
121
+ ```
122
+
79
123
### ** ...**
80
124
81
125
```
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int numberOfSteps (int num) {
4
+ int res = 0 ;
5
+ while (num)
6
+ {
7
+ if ((num & 1 ) == 0 ) num >>= 1 ;
8
+ else --num;
9
+ ++res;
10
+ }
11
+ return res;
12
+ }
13
+ };
Original file line number Diff line number Diff line change
1
+ func numberOfSteps (num int ) int {
2
+ res := 0
3
+ for num != 0 {
4
+ if (num & 1 ) == 0 {
5
+ num >>= 1
6
+ } else {
7
+ num --
8
+ }
9
+ res ++
10
+ }
11
+ return res
12
+ }
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public int numberOfSteps (int num ) {
3
- int cnt = 0 ;
3
+ int res = 0 ;
4
4
while (num != 0 ) {
5
- if (num % 2 == 1 )
6
- num --;
7
- else
8
- num /= 2 ;
9
- cnt ++;
5
+ if ((num & 1 ) == 0 ) {
6
+ num >>= 1 ;
7
+ } else {
8
+ --num ;
9
+ }
10
+ ++res ;
10
11
}
11
- return cnt ;
12
+ return res ;
12
13
}
13
14
}
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def numberOfSteps (self , num : int ) -> int :
3
+ res = 0
4
+ while num :
5
+ if (num & 1 ) == 0 :
6
+ num >>= 1
7
+ else :
8
+ num -= 1
9
+ res += 1
10
+ return res
You can’t perform that action at this time.
0 commit comments