听说找工作最好刷一下这个,于是刷了一下。
主要是前几天面试的时候面试小哥说我数据结构学得不咋地。。。。
其实还是更喜欢POJ。
直接上代码了,觉得这题就是一个简单的动态规划嘛~~~~
#include<iostream>
#include<cmath>
#include<vector>
#define max 32
using namespace std;
class Solution {
public:
int arr[max];
void initarr(int num)
{
for(int i=0;i<=max-1;i++ )
{
arr[i]=pow(2,i);
if(arr[i]>=num)
return ;
}
}
vector<int> countBits(int num) {
vector<int> v;
int i,j;
// initarr(num);
v.push_back(0);
cout<<"[0,";
int *result=new int[num+1];
for(i=1,j=0;i<=num;i++)
{
if(i==pow(2,j))
{
result[i]=1;
// j++;
}
else if (i == pow(2, j + 1))
{
result[i] = 1;
j++;
}
else
{
int t=i-pow(2,j);
result[i]=1+result[t];
}
}
for(i=1;i<=num;i++)
{
v.push_back(result[i]);
if(i!=num)
cout<<result[i]<<",";
else
{
cout<<result[num]<<"]";
}
}
// v.push_back(result[num]);
// v.push(result[num]);
delete result;
return v;
}
};