@@ -68,22 +68,113 @@ Out of all these positions, -1 is the smallest, so return it.
68
68
69
69
<!-- 这里可写通用的实现逻辑 -->
70
70
71
+ 差分数组 + 排序。
72
+
73
+ 如果用数组实现,空间分配过大。因此可以使用哈希表 + 排序,或者直接使用 TreeMap。
74
+
71
75
<!-- tabs:start -->
72
76
73
77
### ** Python3**
74
78
75
79
<!-- 这里可写当前语言的特殊实现逻辑 -->
76
80
77
81
``` python
78
-
82
+ class Solution :
83
+ def brightestPosition (self , lights : List[List[int ]]) -> int :
84
+ d = defaultdict(int )
85
+ for p, r in lights:
86
+ d[p - r] += 1
87
+ d[p + r + 1 ] -= 1
88
+ s = mx = ans = 0
89
+ for k in sorted (d):
90
+ s += d[k]
91
+ if s > mx:
92
+ mx = s
93
+ ans = k
94
+ return ans
79
95
```
80
96
81
97
### ** Java**
82
98
83
99
<!-- 这里可写当前语言的特殊实现逻辑 -->
84
100
85
101
``` java
102
+ class Solution {
103
+ public int brightestPosition (int [][] lights ) {
104
+ TreeMap<Integer , Integer > d = new TreeMap<> ();
105
+ for (int [] e : lights) {
106
+ int l = e[0 ] - e[1 ], r = e[0 ] + e[1 ];
107
+ d. put(l, d. getOrDefault(l, 0 ) + 1 );
108
+ d. put(r + 1 , d. getOrDefault(r + 1 , 0 ) - 1 );
109
+ }
110
+ int s = 0 , mx = 0 , ans = 0 ;
111
+ for (Map . Entry<Integer , Integer > e : d. entrySet()) {
112
+ s += e. getValue();
113
+ if (s > mx) {
114
+ mx = s;
115
+ ans = e. getKey();
116
+ }
117
+ }
118
+ return ans;
119
+ }
120
+ }
121
+ ```
122
+
123
+ ### ** C++**
124
+
125
+ ``` cpp
126
+ class Solution {
127
+ public:
128
+ int brightestPosition(vector<vector<int >>& lights) {
129
+ map<int, int> d;
130
+ for (auto& e : lights)
131
+ {
132
+ int l = e[ 0] - e[ 1] , r = e[ 0] + e[ 1] ;
133
+ ++d[ l] ;
134
+ --d[ r + 1] ;
135
+ }
136
+ int s = 0, mx = 0, ans = 0;
137
+ for (auto& e : d)
138
+ {
139
+ s += e.second;
140
+ if (s > mx)
141
+ {
142
+ mx = s;
143
+ ans = e.first;
144
+ }
145
+ }
146
+ return ans;
147
+ }
148
+ };
149
+ ```
86
150
151
+ ### **Go**
152
+
153
+ ```go
154
+ func brightestPosition(lights [][]int) int {
155
+ d := make(map[int]int)
156
+ for _, e := range lights {
157
+ l, r := e[0]-e[1], e[0]+e[1]
158
+ d[l] += 1
159
+ d[r+1] -= 1
160
+ }
161
+
162
+ var keys []int
163
+ for k := range d {
164
+ keys = append(keys, k)
165
+ }
166
+ sort.Ints(keys)
167
+
168
+ s, mx, ans := 0, 0, 0
169
+ for _, k := range keys {
170
+ s += d[k]
171
+ if s > mx {
172
+ mx = s
173
+ ans = k
174
+ }
175
+ }
176
+ return ans
177
+ }
87
178
```
88
179
89
180
### ** ...**
0 commit comments