publicintcount(int n){int num =0;while(n !=0){
n = n &(n-1);
num++;}return num;}
3. 最長上升子序列(LIS)
classSolution{publicintlengthOfLIS(int[] nums){int len = nums.length;if(len ==0){return0;}int[] dp =newint[len];for(int i=0;i<len;i++){
dp[i]=1;}int ret = dp[0];for(int i=1;i<len;i++){for(int j=0;j<i;j++){if(nums[j]<nums[i]){
dp[i]= Math.max(dp[j]+1,dp[i]);}}
ret = Math.max(dp[i],ret);}return ret;}}
4. 最大連續子序和(MSA)
classSolution{publicintmaxSubArray(int[] nums){/*
int res = nums[0];
int sum = 0;
for (int num : nums) {
if (sum > 0)
sum += num;
else
sum = num;
res = Math.max(res, sum);
}
return res;
*/int dp[]=newint[nums.length];
dp[0]=nums[0];int res = nums[0];for(int i=1;i<nums.length;i++){
dp[i]=Math.max(dp[i-1]+nums[i],nums[i]);if(res < dp[i])
res = dp[i];}return res;}}