File tree 4 files changed +98
-0
lines changed
solution/0300-0399/0396.Rotate Function
4 files changed +98
-0
lines changed Original file line number Diff line number Diff line change @@ -147,6 +147,42 @@ func maxRotateFunction(nums []int) int {
147
147
}
148
148
```
149
149
150
+ ### ** TypeScript**
151
+
152
+ ``` ts
153
+ function maxRotateFunction(nums : number []): number {
154
+ const n = nums .length ;
155
+ const sum = nums .reduce ((r , v ) => r + v );
156
+ let res = nums .reduce ((r , v , i ) => r + v * i , 0 );
157
+ let pre = res ;
158
+ for (let i = 1 ; i < n ; i ++ ) {
159
+ pre = pre - (sum - nums [i - 1 ]) + nums [i - 1 ] * (n - 1 );
160
+ res = Math .max (res , pre );
161
+ }
162
+ return res ;
163
+ }
164
+ ```
165
+
166
+ ### ** Rust**
167
+
168
+ ``` rust
169
+ impl Solution {
170
+ pub fn max_rotate_function (nums : Vec <i32 >) -> i32 {
171
+ let n = nums . len ();
172
+ let sum : i32 = nums . iter (). sum ();
173
+ let mut pre : i32 = nums . iter (). enumerate (). map (| (i , & v )| i as i32 * v ). sum ();
174
+ (0 .. n )
175
+ . map (| i | {
176
+ let res = pre ;
177
+ pre = pre - (sum - nums [i ]) + nums [i ] * (n - 1 ) as i32 ;
178
+ res
179
+ })
180
+ . max ()
181
+ . unwrap_or (0 )
182
+ }
183
+ }
184
+ ```
185
+
150
186
### ** ...**
151
187
152
188
```
Original file line number Diff line number Diff line change @@ -129,6 +129,42 @@ func maxRotateFunction(nums []int) int {
129
129
}
130
130
```
131
131
132
+ ### ** TypeScript**
133
+
134
+ ``` ts
135
+ function maxRotateFunction(nums : number []): number {
136
+ const n = nums .length ;
137
+ const sum = nums .reduce ((r , v ) => r + v );
138
+ let res = nums .reduce ((r , v , i ) => r + v * i , 0 );
139
+ let pre = res ;
140
+ for (let i = 1 ; i < n ; i ++ ) {
141
+ pre = pre - (sum - nums [i - 1 ]) + nums [i - 1 ] * (n - 1 );
142
+ res = Math .max (res , pre );
143
+ }
144
+ return res ;
145
+ }
146
+ ```
147
+
148
+ ### ** Rust**
149
+
150
+ ``` rust
151
+ impl Solution {
152
+ pub fn max_rotate_function (nums : Vec <i32 >) -> i32 {
153
+ let n = nums . len ();
154
+ let sum : i32 = nums . iter (). sum ();
155
+ let mut pre : i32 = nums . iter (). enumerate (). map (| (i , & v )| i as i32 * v ). sum ();
156
+ (0 .. n )
157
+ . map (| i | {
158
+ let res = pre ;
159
+ pre = pre - (sum - nums [i ]) + nums [i ] * (n - 1 ) as i32 ;
160
+ res
161
+ })
162
+ . max ()
163
+ . unwrap_or (0 )
164
+ }
165
+ }
166
+ ```
167
+
132
168
### ** ...**
133
169
134
170
```
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn max_rotate_function ( nums : Vec < i32 > ) -> i32 {
3
+ let n = nums. len ( ) ;
4
+ let sum: i32 = nums. iter ( ) . sum ( ) ;
5
+ let mut pre: i32 = nums. iter ( ) . enumerate ( ) . map ( |( i, & v) | i as i32 * v) . sum ( ) ;
6
+ ( 0 ..n)
7
+ . map ( |i| {
8
+ let res = pre;
9
+ pre = pre - ( sum - nums[ i] ) + nums[ i] * ( n - 1 ) as i32 ;
10
+ res
11
+ } )
12
+ . max ( )
13
+ . unwrap_or ( 0 )
14
+ }
15
+ }
Original file line number Diff line number Diff line change
1
+ function maxRotateFunction ( nums : number [ ] ) : number {
2
+ const n = nums . length ;
3
+ const sum = nums . reduce ( ( r , v ) => r + v ) ;
4
+ let res = nums . reduce ( ( r , v , i ) => r + v * i , 0 ) ;
5
+ let pre = res ;
6
+ for ( let i = 1 ; i < n ; i ++ ) {
7
+ pre = pre - ( sum - nums [ i - 1 ] ) + nums [ i - 1 ] * ( n - 1 ) ;
8
+ res = Math . max ( res , pre ) ;
9
+ }
10
+ return res ;
11
+ }
You can’t perform that action at this time.
0 commit comments