散列、贪心总结
散列
1、需要模拟实现散列的情况
Liner Probing:对H(key)地址 + i 之后 mod Size 得新地址。
Quadratic probing: 对H(key)地址 + i^2 之后 mod Size 得新地址。
2、使用散列表
数字哈希:数组可直接使用。
map<key, val> 配合count方法和insert方法。
字符串hash:将字符串映射为一个整数,再用该整数作为hash表地址。字符串仅由大写字母构成,则将其视为0-25的数字,转换为26进制。若有大小写,则为52进制。 若再纯大写字母后面指定附着1位数字(ABCD3),则先对字母部分转换整数,再 * 10 + 末位数字。
单个字符哈希:将ASCII值做映射即可(0 - 127)。
3、 使用散列表时注意防止越界,如已知 hashTB[i],需要寻找 hashTB[ N - hashTB[i] ]。
贪心
1、把整个过程分成许多步,在每一步中都选择最优的决策。
2、关键是要能想到某道题用贪心的思路来做。