長めのメモ

旅行とか理系の何かとか呼んだ本の記録とか

leetcode -201 bitwise-and-of-numbers-range 解説

問題

leftからrightまでの数をすべてANDの演算をした結果を出力

leetcode.com

解説

leftから1ずつ増やしてAND演算をすると間に合わない

ここでずっと1になっている場所に注目する

left、rightのビットをこれは最上位の連続した1bitである数を数えればよい

よってleft、rightを同じ数になるまで2で割っていけばよい この割った回数をsとおく

そこで残った最上位の1連続した1bitのみが取り出された変数であるleftをsで左シフトすれば求める答えとなる