算法写得好,对象少不了,先来两尝尝鲜

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]往左扩,扩的还是最好的

两种情况里选最大的

 

5.推荐github算法

https://github.com/algorithmzuo

posted @ 2020-11-03 17:08  powerZhangFly  阅读(58)  评论(0)    收藏  举报