跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • leetcode 1758
未分類
5 4 月 2021

leetcode 1758

leetcode 1758

資深大佬 : yujianwjj 2

https://leetcode.com/problems/minimum-changes-to-make-alternating-binary-string/

题目比较简单,只有 010101… 或者 101010… 两个方案 最开始我的解法是:

func minOperations(s string) int {     count1 := 0     // 010101...     for i := 0; i < len(s); i++ {         if int(s[i] - '0') != i % 2 {             count1++         }     }     count2 := 0     // 10101010...     for i := 0; i < len(s); i++ {         if int(s[i] - '0') != (i+1) % 2 {             count2++         }     }     return min(count1, count2) } 

后来发现更简单一点的

func minOperations(s string) int {     count1 := 0     // 010101...     for i := 0; i < len(s); i++ {         if int(s[i] - '0') != i % 2 {             count1++         }     }          return min(count1, len(s)-count1) } 

我的疑问是如何用数学证明这两种方案加起来刚好是 s 的长度。

大佬有話說 (1)

  • 資深大佬 : misdake

    如果 S ^ A = 010101…
    那 S ^ ~A = 101010…
    A 和~A 互补,两个数中 1 的数量总和就是长度。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具