算法写得好,对象少不了,先来两尝尝鲜
1.关于treeMap
treeMap是有序表,不是哈希表
2.如何解决水王数的“在有限的变量里,遍历有限几次”的问题
思路:
第一步:一次删除两个不同的数,没有两种数可删就停
没数剩下来,说明没有水王数
第二步:有剩下来,再遍历验证是否是水王数,
步骤:
第一个逻辑:如果无候选,当前数被立为候选,给它血量一或加一(血量不为零,此时进入第二个逻辑)
第二个逻辑:如果有候选,第一种情况:当前数和候选一样,血量增加一
第二个情况:当前数和候选不一样,血量减一
最终获得候选(目的是为了删掉两个不同的数,即在第二个逻辑的第二个情况两个数一起删除)
3.多个候选人,有一个票超过一半以上,才是算有效;有一台机器只能告诉两张票一样或是不一样,前提人看不到选票内容(水王数进阶)
思路步骤同上,一共就遍历了两轮选票
失败情况
第一种:没有剩下的票,选举失败
第二种:验证阶段,票数张数没有超过一半,选举失败
4.一个数组有正有负有零,还有子数组(连续的),求最大累加和的子数组的累加和,最好只遍历一遍(动态规划)
方法一(暴力解法,没分):
for(int L= 0;L < N;L++){
for(int R= L;R < N;R++){
。。。。。
}
}
方法二:(每个数组位置结尾情况下的答案里,最大的那个,再在最大的里面挑一个最大的)
求i结尾情况下所有子数组的最优累加和
举例
arr[-3,4],
根据下标[0,1,2,3,4]
dp[-3,1]
情况
第一种情况:arr[i]不扩,如dp[0] = arr[0],我就只含有我自己
第二种情况:dp[i-1] + arr[i]往左扩,扩的还是最好的
两种情况里选最大的

浙公网安备 33010602011771号