File tree 3 files changed +154
-0
lines changed
solution/2100-2199/2141.Maximum Running Time of N Computers
3 files changed +154
-0
lines changed Original file line number Diff line number Diff line change 58
58
59
59
<!-- tabs:start -->
60
60
61
+ ### ** Rust**
62
+
63
+ ``` rust
64
+ impl Solution {
65
+ #[allow(dead_code)]
66
+ pub fn max_run_time (n : i32 , batteries : Vec <i32 >) -> i64 {
67
+
68
+ // First sort the batteries
69
+ let mut batteries = batteries ;
70
+ let m = batteries . len () as i32 ;
71
+ batteries . sort ();
72
+
73
+ let mut extra_sum : i64 = 0 ;
74
+ for i in 0 .. (m - n ) as usize {
75
+ extra_sum += batteries [i ] as i64 ;
76
+ }
77
+
78
+ let mut i = (m - n ) as usize ;
79
+ let mut cur_height = batteries [i ];
80
+ let mut ret = cur_height as i64 ;
81
+ while extra_sum != 0 {
82
+ if i + 1 == m as usize {
83
+ assert! (cur_height == * batteries . last (). unwrap ());
84
+ ret += extra_sum / n as i64 ;
85
+ break ;
86
+ }
87
+
88
+ if batteries [i ] == batteries [i + 1 ] {
89
+ i += 1 ;
90
+ continue ;
91
+ }
92
+
93
+ let diff = extra_sum / (i - (m - n ) as usize + 1 ) as i64 ;
94
+
95
+ if (cur_height as i64 + diff ) <= batteries [i + 1 ] as i64 {
96
+ ret = cur_height as i64 + diff ;
97
+ break ;
98
+ } else {
99
+ extra_sum -= (batteries [i + 1 ] - batteries [i ]) as i64 * (i - (m - n ) as usize + 1 ) as i64 ;
100
+ ret = batteries [i + 1 ] as i64 ;
101
+ }
102
+
103
+ i += 1 ;
104
+ if i != m as usize {
105
+ cur_height = batteries [i ];
106
+ }
107
+ }
108
+
109
+ ret
110
+ }
111
+ }
112
+ ```
113
+
61
114
### ** Python3**
62
115
63
116
<!-- 这里可写当前语言的特殊实现逻辑 -->
Original file line number Diff line number Diff line change @@ -51,6 +51,59 @@ We can run the two computers simultaneously for at most 2 minutes, so we return
51
51
52
52
<!-- tabs:start -->
53
53
54
+ ### ** Rust**
55
+
56
+ ``` rust
57
+ impl Solution {
58
+ #[allow(dead_code)]
59
+ pub fn max_run_time (n : i32 , batteries : Vec <i32 >) -> i64 {
60
+
61
+ // First sort the batteries
62
+ let mut batteries = batteries ;
63
+ let m = batteries . len () as i32 ;
64
+ batteries . sort ();
65
+
66
+ let mut extra_sum : i64 = 0 ;
67
+ for i in 0 .. (m - n ) as usize {
68
+ extra_sum += batteries [i ] as i64 ;
69
+ }
70
+
71
+ let mut i = (m - n ) as usize ;
72
+ let mut cur_height = batteries [i ];
73
+ let mut ret = cur_height as i64 ;
74
+ while extra_sum != 0 {
75
+ if i + 1 == m as usize {
76
+ assert! (cur_height == * batteries . last (). unwrap ());
77
+ ret += extra_sum / n as i64 ;
78
+ break ;
79
+ }
80
+
81
+ if batteries [i ] == batteries [i + 1 ] {
82
+ i += 1 ;
83
+ continue ;
84
+ }
85
+
86
+ let diff = extra_sum / (i - (m - n ) as usize + 1 ) as i64 ;
87
+
88
+ if (cur_height as i64 + diff ) <= batteries [i + 1 ] as i64 {
89
+ ret = cur_height as i64 + diff ;
90
+ break ;
91
+ } else {
92
+ extra_sum -= (batteries [i + 1 ] - batteries [i ]) as i64 * (i - (m - n ) as usize + 1 ) as i64 ;
93
+ ret = batteries [i + 1 ] as i64 ;
94
+ }
95
+
96
+ i += 1 ;
97
+ if i != m as usize {
98
+ cur_height = batteries [i ];
99
+ }
100
+ }
101
+
102
+ ret
103
+ }
104
+ }
105
+ ```
106
+
54
107
### ** Python3**
55
108
56
109
``` python
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ #[ allow( dead_code) ]
3
+ pub fn max_run_time ( n : i32 , batteries : Vec < i32 > ) -> i64 {
4
+
5
+ // First sort the batteries
6
+ let mut batteries = batteries;
7
+ let m = batteries. len ( ) as i32 ;
8
+ batteries. sort ( ) ;
9
+
10
+ let mut extra_sum: i64 = 0 ;
11
+ for i in 0 ..( m - n) as usize {
12
+ extra_sum += batteries[ i] as i64 ;
13
+ }
14
+
15
+ let mut i = ( m - n) as usize ;
16
+ let mut cur_height = batteries[ i] ;
17
+ let mut ret = cur_height as i64 ;
18
+ while extra_sum != 0 {
19
+ if i + 1 == m as usize {
20
+ assert ! ( cur_height == * batteries. last( ) . unwrap( ) ) ;
21
+ ret += extra_sum / n as i64 ;
22
+ break ;
23
+ }
24
+
25
+ if batteries[ i] == batteries[ i + 1 ] {
26
+ i += 1 ;
27
+ continue ;
28
+ }
29
+
30
+ let diff = extra_sum / ( i - ( m - n) as usize + 1 ) as i64 ;
31
+
32
+ if ( cur_height as i64 + diff) <= batteries[ i + 1 ] as i64 {
33
+ ret = cur_height as i64 + diff;
34
+ break ;
35
+ } else {
36
+ extra_sum -= ( batteries[ i + 1 ] - batteries[ i] ) as i64 * ( i - ( m - n) as usize + 1 ) as i64 ;
37
+ ret = batteries[ i + 1 ] as i64 ;
38
+ }
39
+
40
+ i += 1 ;
41
+ if i != m as usize {
42
+ cur_height = batteries[ i] ;
43
+ }
44
+ }
45
+
46
+ ret
47
+ }
48
+ }
You can’t perform that action at this time.
0 commit comments