因为宿舍网络无法打开GitHub,暂存代码于此,之后会转移去GitHub。
第一题:
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
if (n==0)return 0;
int result=0;
for(int i=0;i<32;i++){
result<<=1;
result+=n&1;
n>>=1;
}
return result;
}
}
第二题:
class Solution {
public int[] countBits(int num) {
int[] a=new int [num+1];
a[0]=0;
if(num==0) return a;
for(int i=0;i<=num;i++){
int result=0;
int p=i;
for(int j=0;j<32;j++){
if((p&1)==1){
result++;
}
p>>=1;
}
a[i]=result;
}
return a;
}
}
第三题:
参考的背包问题
class Solution {
public int findTargetSumWays(int[] nums, int S) {
int sum=0;
int n=0;
for(int num:nums){
sum=sum+num;
n++;
}
if(sum<S||n==0){
return 0;
}
int dif=sum-S;
int[] a=new int[dif+1];
a[0]=1;
for (int i = 0; i < nums.length; i ++) {
for (int d = dif; d >= nums[i] * 2; d --) {
a[d] += a[d-nums[i]*2];
}
}
return a[dif];
}
}
网友评论