学过位运算的你是否只会二进制|刷题打卡

129 阅读1分钟

一、题目描述:

二、思路分析:

第一时间想到的是既然由3的幂之和组成,那么一定是3的整数倍,结果第二个示例就被打脸了, 第二时间想到是一直除以3,或上减一一直除以3,结果发现要求若干个[不同的3的幂] 之和 这个时候就想到位运算了,可以理解为三进制,数字里面可以有0,有1但绝对不能有2

三、AC 代码:

class Solution {
public:
    bool checkPowersOfThree(int n) {
        // int t = 1;
        while(n > 1){
            if(n % 3 == 2)return false;
            n = n/3;
        }
        return true;
    }
};

四、总结:

这个题其实写作判断一个数字是否可以表示成三的幂的和读作 三进制表示是否有2,周赛简单题向来是以手速为主,应该反思下自己为什么用了五分钟,而大佬只用35秒就做完了第二题。

代码其实就四行,而且这道题其实也没那么难,甚至可以说是在仔细读题的情况下很简单,

为什么读题时间多于35s的同时,没人家写的快呢?

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情