您的位置:首页 > 编程语言 > C语言/C++

位操作-leetcode 401. Binary Watch

2017-07-03 19:27 337 查看
原题链接:Binary Watch

题解:

class Solution {
public:
//计算1的位数
int countBits(int n){
if(n==0)return 0;
int count=1;
while(n=n&(n-1))count++;
return count;
}

vector<string> readBinaryWatch(int num) {
/*
Time Complexity:O(1)
Space Complexity:O(1)
*/
vector<string>svec;
if(num<0 || num>8 )return svec;
if(num==0)return vector<string>{"0:00"};
vector<int>hours;
for(int i=0;i<=3&&i<=num;i++){
hours.clear();
for(int temp=0;temp<=11;temp++){
if(countBits(temp)==i){
hours.push_back(temp);
}
}
for(int temp=0;temp<=59;temp++){
if(countBits(temp)==num-i){
for(int k=0;k<hours.size();k++){
svec.push_back(to_string(hours[k])+":"+((temp<10)?("0"+to_string(temp)):to_string(temp)));
}
}
}
}
return svec;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode c++ 位操作