diff --git a/kt/largest-combination-with-bitwise-and-greater-than-zero.kt b/kt/largest-combination-with-bitwise-and-greater-than-zero.kt new file mode 100644 index 0000000..1239b22 --- /dev/null +++ b/kt/largest-combination-with-bitwise-and-greater-than-zero.kt @@ -0,0 +1,22 @@ +class Solution { + private val maxBits = 24 + + private data class State(val counters: IntArray) { + fun update(num: Int): State { + counters.indices.fold(num) { num, i -> + if (num % 2 != 0) { + counters[i] += 1 + } + + num.shr(1) + } + + return this + } + } + + fun largestCombination(candidates: IntArray): Int = + candidates.fold(State(IntArray(maxBits))) { acc, it -> + acc.update(it) + }.counters.max() +}