31 lines
561 B
R
31 lines
561 B
R
myunion <- function(A, B) {
|
|
# MYUNION Union of two sets of positive integers (much faster than built - in union)
|
|
# C <- myunion(A, B)
|
|
|
|
if (is.null(A)) {
|
|
ma <- 0
|
|
} else {
|
|
ma <- max(A)
|
|
}
|
|
|
|
if (is.null(B)) {
|
|
mb <- 0
|
|
} else {
|
|
mb <- max(B)
|
|
}
|
|
|
|
if (ma == 0 & mb == 0) {
|
|
C <- vector()
|
|
} else if (ma == 0 & mb > 0) {
|
|
C <- B
|
|
} else if (ma > 0 & mb == 0) {
|
|
C <- A
|
|
} else {
|
|
# bits <- sparse(1, max(ma, mb))
|
|
bits <- zeros(1, max(c(ma, mb)))
|
|
bits[A] <- 1
|
|
bits[B] <- 1
|
|
C <- find(bits)
|
|
}
|
|
return(C)
|
|
}
|