One minute
Leetcode 2154
2154. Keep Multiplying Found Values by Two
The idea of both of these solutions is to add nums
elements to a map, and then just keep checking whether original *= 2
is in the map.
Instead of original *= 2
I am doing original <<= 1
for better time.
In the first solution I am only adding elements that are multiples of original
to the map.
func findFinalValue(nums []int, original int) int {
m := make(map[int] bool)
for _, n := range nums {
if n % original == 0 {
m[n] = true
}
}
for m[original] {
original <<= 1
}
return original
}
In the second solution I am adding all elements from nums
to the map. Note that this solution has a little worse average space complexity. In the worst case they will both have the same complexity.
func findFinalValue(nums []int, original int) int {
m := make(map[int] bool)
for _, n := range nums {
m[n] = true
}
for m[original] {
original <<= 1
}
return original
}
Read other posts