每日一结
剑指 Offer 14- I. 剪绳子
采用动态规划;
创建数组dp,其中dp[i] 表示将正整数 i拆分成至少两个正整数的和之后,这些正整数的最大乘积。
特别地,0 不是正整数,1 是最小的正整数,0 和 1 都不能拆分,因此dp[0]=dp[1]=0;
所以直接从长度为 2 的绳长开始;
再遍历,减去的绳长 j (j = 1; j < i; j++);
求出最大值,赋予dp[i];
max = Math.max(max, Math.max(j * (i - j) , j * dp[i - j]));
最后return dp[n]即可;
剑指 Offer 15. 二进制中 1 的个数
注意//java中无符号右移是">>>"
ans += n & 1;
n >>>= 1;
剑指 Offer 56 - I. 数组中数字出现的次数 & 剑指 Offer 56 - II. 数组中数字出现的次数 II
HashMap;
浙公网安备 33010602011771号