Merge Intervals Algorithm Optimization with Bitset in C++ and Swift
class Solution {
public:
bitset<20005> s;
bool first;
int a=-1,b=-1,lb=INT_MAX,ub=INT_MIN;
vector<vector
for interval in intervals {
first = true
lb = min(lb, (interval[0] << 1) + 1)
ub = max(ub, (interval[1] << 1) + 1)
var j = (interval[0] << 1) + 1
while j <= (interval[1] << 1) + 1 {
s[j] = true
if first {
first = false
} else {
s[j-1] = true
}
j += 2
}
}
var i = lb
while i < ub + 3 {
if s[i] && s[i+1] {
if a == -1 {
a = i
b = i
} else {
b += 2
}
} else if s[i] && !s[i-1] {
ans.append([i-1>>1, i-1>>1])
} else {
if a != -1 && b != -1 {
ans.append([a-1>>1, b+1>>1])
}
a = -1
b = -1
}
i += 2
}
return ans
}
}
原文地址: https://www.cveoy.top/t/topic/qeNN 著作权归作者所有。请勿转载和采集!