338. Counting Bits

// My own solution
class
Solution { public: vector<int> countBits(int num) { vector<int> ret = {0}; if(num <= 0) return ret; ret.push_back(1); int i = 2; while(i <= num){ int start = (i >> 1) - 1; int mid = i; int end = mid << 1; while(++start < mid && i <= num){ ret.push_back(ret[start]); i++; } mid -= 1; while(i < end && i <= num){ ret.push_back(ret[++mid] + 1); i++; } } return ret; } };
// Others' solution
class
Solution { public: vector<int> countBits(int num) { vector<int> ret(num + 1, 0); for(int i = 1; i <= num; i++){ ret[i]=ret[i / 2]+(i % 2); } return ret; } };
posted @ 2016-09-25 11:52  blankquiz  阅读(153)  评论(0)    收藏  举报