《面试笔试算法上》-编码能力提升
- 3/5的倍数:等差数列 时间复杂度:o(n) -> o(1)
- 偶斐波那契数列:用超大数组存储递推数组 -> 用两个变量来回倒,空间复杂度 o(1)
- 最大回文乘积:反转+判等,特殊情况(奇数位,末尾含0),双层枚举(int i = 0; int j = i;)
- 连续数字最大乘积:滑动窗口法(静态窗口,预先存储数组),进来0,计数器,数据类型上界
- 方阵中最大乘积:方向数组,边界补零,debug经历(
int num[30][30]
,而不是char num[30][30]
)(int now = num[i][j]
的定义位置,不能放在全局区) - 最长考拉兹序列:记忆化,递归,递推
- 大整数加法:步骤:字符串输入 -> 反转存储 -> 对应相加(比较较大位) -> 处理进位 -> 反向输出;注意事项(
num[0] = sizeof(s)首位存储数组大小
,) - 大整数乘法:加法计算规则;数组长度(
ans[0] = num1[0] + num2[0] - 1
)对应位置(ans[i +j - 1] += num1[i] * num2[j]
; - 大整数除法:除法运算规则(课后思考题)
- 网格路径:方法(1. 递推(动态规划) 2. 排列组合);补零大法(
外围一圈零
);排列组合通用代码 - 最大路径和(树塔问题):自上而下,自下而上(逆问题转换),递推公式,
- 树塔狂想曲(综合题,不走某个点的最大路径):核心思路(①某一行次大值,最大值坐标②一个点的最大路径值(utd + dtu - num ③最大值与次大值的更新);注意点:暂时性的ban掉;快速读入;询问次数太大;
参考文献:
1 编程能力提升