日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【五分钟】看完一道有装逼解法的算法题

發布時間:2024/9/27 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【五分钟】看完一道有装逼解法的算法题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

戳藍字“CSDN云計算”關注我們哦!


作者 |?程序員小吳

來源 | 五分鐘學算法


題目來源于 LeetCode 上第 342 號問題:4 的冪。題目難度為 Easy,目前通過率為 45.3% 。

題目描述

給定一個整數 (32 位有符號整數),請編寫一個函數來判斷它是否是 4 的冪次方。

示例 1:

示例 2:

輸入:?5
輸出:?false

進階:
你能不使用循環或者遞歸來完成本題嗎?

題目解析

這道題最直接的方法就是不停的去除以 ?4 ,看最終結果是否為 1 ,參見代碼如下:

class?Solution?{
????public?boolean?isPowerOfFour(int?num)?{
?????????while?(?(num?!=?0)??&&?(num?%?4?==?0))?{
????????????num?/=?4;
????????}
????????return?num?==?1;
????}
}

不過這段代碼使用了?循環?,逼格不夠高。

對于一個整數而言,如果這個數是 4 的冪次方,那它必定也是 2 的冪次方。

我們先將 2 的冪次方列出來找一下其中哪些數是 4 的冪次方。

十進制二進制

2

10

4

100?(1 在第 3 位)

8

1000

16

10000(1 在第 5 位)

32

100000

64

1000000(1 在第 7 位)

128

10000000

256

100000000(1 在第 9 位)

512

1000000000

1024

10000000000(1 在第 11 位)

找一下規律: 4 的冪次方的數的二進制表示 1 的位置都是在奇數位

之前?在小吳的文章中判斷一個數是否是 2 的冪次方數?使用的是位運算?n & ( n - 1 )。同樣的,這里依舊可以使用位運算:將這個數與一個特殊的數做位運算。

這個特殊的數有如下特點:

  • 足夠大,但不能超過 32 位,即最大為?31 個 1?

  • 它的二進制表示中奇數位為 1 ,偶數位為 0

符合這兩個條件的二進制數是:

1010101010101010101010101010101

如果用一個 4 的冪次方數和它做與運算,得到的還是 4 的冪次方數

將這個二進制數轉換成 16 進制表示:0x55555555 。有沒有感覺逼格更高點。。。

圖片描述

代碼實現

class?Solution?{
????public?boolean?isPowerOfFour(int?num)?{
????????if?(num?<=?0)
????????????return?false;
????????//先判斷是否是?2?的冪
????????if?((num?&?num?-?1)?!=?0)
????????????return?false;
????????//再判斷如果進行與運算之后是否還是本身
????????if?((num?&?0x55555555)?==?num)
????????????return?true;
????????return?false;
????}
}



福利

掃描添加小編微信,備注“姓名+公司職位”,加入【云計算學習交流群】,和志同道合的朋友們共同打卡學習!



推薦閱讀:

  • IEEE 回應禁止華為系審稿人;WiFi聯盟、藍牙聯盟已恢復華為成員資格;中國計算機學會:暫時中止與IEEE通信學會合作……

  • ARM 發布新一代 CPU 和 GPU,實現 20% 性能提升!

  • 前端開發 20 年變遷史

  • 北漂杭漂的程序員,是如何買到第一套房子?

  • “愛裝X”開源組織:“教科書級”AI知識樹究竟長什么樣?

  • 500行Python代碼打造刷臉考勤系統

  • 權游播完了, 你在罵爛尾, 有人卻悄悄解鎖了新操作……


真香,朕在看了! 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【五分钟】看完一道有装逼解法的算法题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。