Skip to content

Commit 6a670af

Browse files
authored
feat: add solutions to lc problem: No.1943 (#4354)
No.1943.Describe the Painting
1 parent 2341904 commit 6a670af

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed

Diff for: solution/1900-1999/1943.Describe the Painting/README.md

+32
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,38 @@ public:
181181
};
182182
```
183183
184+
#### Go
185+
186+
```go
187+
func splitPainting(segments [][]int) [][]int64 {
188+
d := make(map[int]int64)
189+
for _, seg := range segments {
190+
d[seg[0]] += int64(seg[2])
191+
d[seg[1]] -= int64(seg[2])
192+
}
193+
dList := make([]int, 0, len(d))
194+
for k := range d {
195+
dList = append(dList, k)
196+
}
197+
sort.Ints(dList)
198+
199+
var ans [][]int64
200+
201+
i := dList[0]
202+
cur := d[i]
203+
for j := 1; j < len(dList); j++ {
204+
it := d[dList[j]]
205+
if cur > 0 {
206+
ans = append(ans, []int64{int64(i), int64(dList[j]), cur})
207+
}
208+
cur += it
209+
i = dList[j]
210+
}
211+
212+
return ans
213+
}
214+
```
215+
184216
<!-- tabs:end -->
185217

186218
<!-- solution:end -->

Diff for: solution/1900-1999/1943.Describe the Painting/README_EN.md

+32
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,38 @@ public:
179179
};
180180
```
181181
182+
#### Go
183+
184+
```go
185+
func splitPainting(segments [][]int) [][]int64 {
186+
d := make(map[int]int64)
187+
for _, seg := range segments {
188+
d[seg[0]] += int64(seg[2])
189+
d[seg[1]] -= int64(seg[2])
190+
}
191+
dList := make([]int, 0, len(d))
192+
for k := range d {
193+
dList = append(dList, k)
194+
}
195+
sort.Ints(dList)
196+
197+
var ans [][]int64
198+
199+
i := dList[0]
200+
cur := d[i]
201+
for j := 1; j < len(dList); j++ {
202+
it := d[dList[j]]
203+
if cur > 0 {
204+
ans = append(ans, []int64{int64(i), int64(dList[j]), cur})
205+
}
206+
cur += it
207+
i = dList[j]
208+
}
209+
210+
return ans
211+
}
212+
```
213+
182214
<!-- tabs:end -->
183215

184216
<!-- solution:end -->
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
func splitPainting(segments [][]int) [][]int64 {
2+
d := make(map[int]int64)
3+
for _, seg := range segments {
4+
d[seg[0]] += int64(seg[2])
5+
d[seg[1]] -= int64(seg[2])
6+
}
7+
dList := make([]int, 0, len(d))
8+
for k := range d {
9+
dList = append(dList, k)
10+
}
11+
sort.Ints(dList)
12+
13+
var ans [][]int64
14+
15+
i := dList[0]
16+
cur := d[i]
17+
for j := 1; j < len(dList); j++ {
18+
it := d[dList[j]]
19+
if cur > 0 {
20+
ans = append(ans, []int64{int64(i), int64(dList[j]), cur})
21+
}
22+
cur += it
23+
i = dList[j]
24+
}
25+
26+
return ans
27+
}

0 commit comments

Comments
 (0)