File tree 6 files changed +182
-2
lines changed
solution/1800-1899/1846.Maximum Element After Decreasing and Rearranging
6 files changed +182
-2
lines changed Original file line number Diff line number Diff line change @@ -69,22 +69,86 @@ arr 中最大元素为 3 。
69
69
70
70
<!-- 这里可写通用的实现逻辑 -->
71
71
72
+ ** 方法一:排序 + 贪心**
73
+
72
74
<!-- tabs:start -->
73
75
74
76
### ** Python3**
75
77
76
78
<!-- 这里可写当前语言的特殊实现逻辑 -->
77
79
78
80
``` python
79
-
81
+ class Solution :
82
+ def maximumElementAfterDecrementingAndRearranging (self , arr : List[int ]) -> int :
83
+ arr.sort()
84
+ arr[0 ] = 1
85
+ for i in range (1 , len (arr)):
86
+ d = max (0 , arr[i] - arr[i - 1 ] - 1 )
87
+ arr[i] -= d
88
+ return max (arr)
80
89
```
81
90
82
91
### ** Java**
83
92
84
93
<!-- 这里可写当前语言的特殊实现逻辑 -->
85
94
86
95
``` java
96
+ class Solution {
97
+ public int maximumElementAfterDecrementingAndRearranging (int [] arr ) {
98
+ Arrays . sort(arr);
99
+ arr[0 ] = 1 ;
100
+ int ans = 1 ;
101
+ for (int i = 1 ; i < arr. length; ++ i) {
102
+ int d = Math . max(0 , arr[i] - arr[i - 1 ] - 1 );
103
+ arr[i] -= d;
104
+ ans = Math . max(ans, arr[i]);
105
+ }
106
+ return ans;
107
+ }
108
+ }
109
+ ```
110
+
111
+ ### ** C++**
112
+
113
+ ``` cpp
114
+ class Solution {
115
+ public:
116
+ int maximumElementAfterDecrementingAndRearranging(vector<int >& arr) {
117
+ sort(arr.begin(), arr.end());
118
+ arr[ 0] = 1;
119
+ int ans = 1;
120
+ for (int i = 1; i < arr.size(); ++i)
121
+ {
122
+ int d = max(0, arr[ i] - arr[ i - 1] - 1);
123
+ arr[ i] -= d;
124
+ ans = max(ans, arr[ i] );
125
+ }
126
+ return ans;
127
+ }
128
+ };
129
+ ```
87
130
131
+ ### **Go**
132
+
133
+ ```go
134
+ func maximumElementAfterDecrementingAndRearranging(arr []int) int {
135
+ sort.Ints(arr)
136
+ ans := 1
137
+ arr[0] = 1
138
+ for i := 1; i < len(arr); i++ {
139
+ d := max(0, arr[i]-arr[i-1]-1)
140
+ arr[i] -= d
141
+ ans = max(ans, arr[i])
142
+ }
143
+ return ans
144
+ }
145
+
146
+ func max(a, b int) int {
147
+ if a > b {
148
+ return a
149
+ }
150
+ return b
151
+ }
88
152
```
89
153
90
154
### ** ...**
Original file line number Diff line number Diff line change @@ -68,13 +68,75 @@ The largest element in <code>arr is 3.</code>
68
68
### ** Python3**
69
69
70
70
``` python
71
-
71
+ class Solution :
72
+ def maximumElementAfterDecrementingAndRearranging (self , arr : List[int ]) -> int :
73
+ arr.sort()
74
+ arr[0 ] = 1
75
+ for i in range (1 , len (arr)):
76
+ d = max (0 , arr[i] - arr[i - 1 ] - 1 )
77
+ arr[i] -= d
78
+ return max (arr)
72
79
```
73
80
74
81
### ** Java**
75
82
76
83
``` java
84
+ class Solution {
85
+ public int maximumElementAfterDecrementingAndRearranging (int [] arr ) {
86
+ Arrays . sort(arr);
87
+ arr[0 ] = 1 ;
88
+ int ans = 1 ;
89
+ for (int i = 1 ; i < arr. length; ++ i) {
90
+ int d = Math . max(0 , arr[i] - arr[i - 1 ] - 1 );
91
+ arr[i] -= d;
92
+ ans = Math . max(ans, arr[i]);
93
+ }
94
+ return ans;
95
+ }
96
+ }
97
+ ```
98
+
99
+ ### ** C++**
100
+
101
+ ``` cpp
102
+ class Solution {
103
+ public:
104
+ int maximumElementAfterDecrementingAndRearranging(vector<int >& arr) {
105
+ sort(arr.begin(), arr.end());
106
+ arr[ 0] = 1;
107
+ int ans = 1;
108
+ for (int i = 1; i < arr.size(); ++i)
109
+ {
110
+ int d = max(0, arr[ i] - arr[ i - 1] - 1);
111
+ arr[ i] -= d;
112
+ ans = max(ans, arr[ i] );
113
+ }
114
+ return ans;
115
+ }
116
+ };
117
+ ```
77
118
119
+ ### **Go**
120
+
121
+ ```go
122
+ func maximumElementAfterDecrementingAndRearranging(arr []int) int {
123
+ sort.Ints(arr)
124
+ ans := 1
125
+ arr[0] = 1
126
+ for i := 1; i < len(arr); i++ {
127
+ d := max(0, arr[i]-arr[i-1]-1)
128
+ arr[i] -= d
129
+ ans = max(ans, arr[i])
130
+ }
131
+ return ans
132
+ }
133
+
134
+ func max(a, b int) int {
135
+ if a > b {
136
+ return a
137
+ }
138
+ return b
139
+ }
78
140
```
79
141
80
142
### ** ...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int maximumElementAfterDecrementingAndRearranging (vector<int >& arr) {
4
+ sort (arr.begin (), arr.end ());
5
+ arr[0 ] = 1 ;
6
+ int ans = 1 ;
7
+ for (int i = 1 ; i < arr.size (); ++i)
8
+ {
9
+ int d = max (0 , arr[i] - arr[i - 1 ] - 1 );
10
+ arr[i] -= d;
11
+ ans = max (ans, arr[i]);
12
+ }
13
+ return ans;
14
+ }
15
+ };
Original file line number Diff line number Diff line change
1
+ func maximumElementAfterDecrementingAndRearranging (arr []int ) int {
2
+ sort .Ints (arr )
3
+ ans := 1
4
+ arr [0 ] = 1
5
+ for i := 1 ; i < len (arr ); i ++ {
6
+ d := max (0 , arr [i ]- arr [i - 1 ]- 1 )
7
+ arr [i ] -= d
8
+ ans = max (ans , arr [i ])
9
+ }
10
+ return ans
11
+ }
12
+
13
+ func max (a , b int ) int {
14
+ if a > b {
15
+ return a
16
+ }
17
+ return b
18
+ }
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public int maximumElementAfterDecrementingAndRearranging (int [] arr ) {
3
+ Arrays .sort (arr );
4
+ arr [0 ] = 1 ;
5
+ int ans = 1 ;
6
+ for (int i = 1 ; i < arr .length ; ++i ) {
7
+ int d = Math .max (0 , arr [i ] - arr [i - 1 ] - 1 );
8
+ arr [i ] -= d ;
9
+ ans = Math .max (ans , arr [i ]);
10
+ }
11
+ return ans ;
12
+ }
13
+ }
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def maximumElementAfterDecrementingAndRearranging (self , arr : List [int ]) -> int :
3
+ arr .sort ()
4
+ arr [0 ] = 1
5
+ for i in range (1 , len (arr )):
6
+ d = max (0 , arr [i ] - arr [i - 1 ] - 1 )
7
+ arr [i ] -= d
8
+ return max (arr )
You can’t perform that action at this time.
0 commit comments