Skip to content

Commit aaaa95b

Browse files
committed
feat: add solutions to lc problem: No.1893.Check if All the Integers in a Range Are Covered
1 parent 055195c commit aaaa95b

File tree

5 files changed

+144
-2
lines changed

5 files changed

+144
-2
lines changed

solution/1800-1899/1893.Check if All the Integers in a Range Are Covered/README.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,71 @@
4848

4949
<!-- 这里可写通用的实现逻辑 -->
5050

51+
利用差分数组进行区间更新
52+
5153
<!-- tabs:start -->
5254

5355
### **Python3**
5456

5557
<!-- 这里可写当前语言的特殊实现逻辑 -->
5658

5759
```python
58-
60+
class Solution:
61+
def isCovered(self, ranges: List[List[int]], left: int, right: int) -> bool:
62+
diff = [0 for i in range(52)]
63+
for rg in ranges:
64+
diff[rg[0]] += 1
65+
diff[rg[1] + 1] -= 1
66+
cur = 0
67+
for i, df in enumerate(diff):
68+
cur += df
69+
if left <= i <= right and cur == 0:
70+
return False
71+
return True
5972
```
6073

6174
### **Java**
6275

6376
<!-- 这里可写当前语言的特殊实现逻辑 -->
6477

6578
```java
79+
class Solution {
80+
public boolean isCovered(int[][] ranges, int left, int right) {
81+
int[] diff = new int[52];
82+
for (int[] range : ranges) {
83+
diff[range[0]]++;
84+
diff[range[1] + 1]--;
85+
}
86+
int cur = 0;
87+
for (int i = 0; i < 52; i++) {
88+
cur += diff[i];
89+
if (left <= i && i <= right && cur == 0) {
90+
return false;
91+
}
92+
}
93+
return true;
94+
}
95+
}
96+
```
6697

98+
### **Go**
99+
100+
```go
101+
func isCovered(ranges [][]int, left int, right int) bool {
102+
diff := make([]int, 52)
103+
for _, rg := range ranges {
104+
diff[rg[0]]++
105+
diff[rg[1]+1]--
106+
}
107+
cur := 0
108+
for i, df := range diff {
109+
cur += df
110+
if i >= left && i <= right && cur == 0 {
111+
return false
112+
}
113+
}
114+
return true
115+
}
67116
```
68117

69118
### **...**

solution/1800-1899/1893.Check if All the Integers in a Range Are Covered/README_EN.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,67 @@
4242

4343
## Solutions
4444

45+
Interval update using difference array.
46+
4547
<!-- tabs:start -->
4648

4749
### **Python3**
4850

4951
```python
50-
52+
class Solution:
53+
def isCovered(self, ranges: List[List[int]], left: int, right: int) -> bool:
54+
diff = [0 for i in range(52)]
55+
for rg in ranges:
56+
diff[rg[0]] += 1
57+
diff[rg[1] + 1] -= 1
58+
cur = 0
59+
for i, df in enumerate(diff):
60+
cur += df
61+
if left <= i <= right and cur == 0:
62+
return False
63+
return True
5164
```
5265

5366
### **Java**
5467

5568
```java
69+
class Solution {
70+
public boolean isCovered(int[][] ranges, int left, int right) {
71+
int[] diff = new int[52];
72+
for (int[] range : ranges) {
73+
diff[range[0]]++;
74+
diff[range[1] + 1]--;
75+
}
76+
int cur = 0;
77+
for (int i = 0; i < 52; i++) {
78+
cur += diff[i];
79+
if (left <= i && i <= right && cur == 0) {
80+
return false;
81+
}
82+
}
83+
return true;
84+
}
85+
}
86+
```
5687

88+
### **Go**
89+
90+
```go
91+
func isCovered(ranges [][]int, left int, right int) bool {
92+
diff := make([]int, 52)
93+
for _, rg := range ranges {
94+
diff[rg[0]]++
95+
diff[rg[1]+1]--
96+
}
97+
cur := 0
98+
for i, df := range diff {
99+
cur += df
100+
if i >= left && i <= right && cur == 0 {
101+
return false
102+
}
103+
}
104+
return true
105+
}
57106
```
58107

59108
### **...**
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
func isCovered(ranges [][]int, left int, right int) bool {
2+
diff := make([]int, 52)
3+
for _, rg := range ranges {
4+
diff[rg[0]]++
5+
diff[rg[1]+1]--
6+
}
7+
cur := 0
8+
for i, df := range diff {
9+
cur += df
10+
if i >= left && i <= right && cur == 0 {
11+
return false
12+
}
13+
}
14+
return true
15+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public boolean isCovered(int[][] ranges, int left, int right) {
3+
int[] diff = new int[52];
4+
for (int[] range : ranges) {
5+
diff[range[0]]++;
6+
diff[range[1] + 1]--;
7+
}
8+
int cur = 0;
9+
for (int i = 0; i < 52; i++) {
10+
cur += diff[i];
11+
if (left <= i && i <= right && cur == 0) {
12+
return false;
13+
}
14+
}
15+
return true;
16+
}
17+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def isCovered(self, ranges: List[List[int]], left: int, right: int) -> bool:
3+
diff = [0 for i in range(52)]
4+
for rg in ranges:
5+
diff[rg[0]] += 1
6+
diff[rg[1] + 1] -= 1
7+
cur = 0
8+
for i, df in enumerate(diff):
9+
cur += df
10+
if left <= i <= right and cur == 0:
11+
return False
12+
return True

0 commit comments

Comments
 (0)