Re: [閒聊] 每日leetcode

看板Marginalman作者 (神楽めあ的錢包)時間3月前 (2025/09/07 01:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1515/1548 (看更多)
3495. Minimum Operations to Make Array Elements Zero 思路: 從題目可以知道1個數字x要變成0需要花的次數 是取決於floor(log4(x)) + 1 假設位於 4^n ~ 4^(n+1) -1間的數字有i個 那需要花費的次數就為(n+1) * i 接著照上面的方法計算出每個query所需要的總次數 step 因為每次可以選兩個數次出來/4 所以要將step / 2, 如果是奇數還要再 + 1 最後算完所有query就可以得到答案了 golang code : func minOperations(queries [][]int) int64 { ans := 0 interval := make([][2]int, 0, 31) for i := 0; i < 31; i++ { interval = append(interval, [2]int{1 << (2 * i), 1<<(2*(i+1)) - 1}) } for _, query := range queries { n := int(log4(float64(query[1]))) l, r := -1, -1 s := 0 for l != query[0] { l, r = max(interval[n][0], query[0]), min(interval[n][1], query[1]) num := (r - l + 1) s += num * (n + 1) n-- } if s&1==1{ ans += s/2+1 }else{ ans += s/2 } } return int64(ans) } func log4(x float64) float64 { return math.Log(x) / math.Log(4) } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.121.235.241 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1757181252.A.9ED.html
文章代碼(AID): #1el7L4dj (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1el7L4dj (Marginalman)