重新开始刷leetcode,记录刷题过程中的一些理解。
https://leetcode.cn/problems/binary-watch/description/
这里__builtin_popcount统计数字中二进制位为1的个数,例如7:07分,那么小时中包含3个1,分钟包含3个1,这是属于亮灯6个的其中一种组合。
因此我们遍历小时和分钟(12*60种组合),分别计算每种组合里亮灯个数与给定个数相同的情况,如果相等则输出该时分组合形式。

class Solution
{
public:
    vector<string> readBinaryWatch(int num)
    {
        vector<string> result;
        for(int hours = 0; hours < 12; hours++)
        {
            for(int minute = 0; minute < 60; minute++)
                if(__builtin_popcount(hours) + __builtin_popcount(minute) == num )
                    result.push_back(to_string(hours)+(minute<10 ?":0":":")+to_string(minute));
        }
        return result;
    }
};