摘要:
方法一: 我自己的方法,建一个stack,每遇到数字就推进栈里,每遇到#,就弹出一个数字,最后栈里必须剩一个#。 时间复杂度是O(n) 2. 别人的方法 每一个数字可以有两条发出的边,每个#会占用一条边,每一个数字自己本身会占用一个边,但是又会产生两个边,所以维持一个计数,一旦小于0就返回false 阅读全文
摘要:
方法一: 我自己的方法,建一个stack,每遇到数字就推进栈里,每遇到#,就弹出一个数字,最后栈里必须剩一个#。 时间复杂度是O(n) 2. 别人的方法 每一个数字可以有两条发出的边,每个#会占用一条边,每一个数字自己本身会占用一个边,但是又会产生两个边,所以维持一个计数,一旦小于0就返回false 阅读全文
摘要:
思路: 设置一个counter,并且用res记录第一个数字,从第二个开始,如果这个数和前一个数是一样的,那么counter++,如果不一样,就把counter--,如果counter变成0了,就把res放到当前数字上。一遍走完,返回res就好了。 因为majority的数字超过一半,它总能中和调别的 阅读全文
摘要:
建立一个二维的表,每一个格子的值,都是以此位置为结尾的最长的增序序列。所以这个值需要上下左右四个值来确定,就是一个dfs。 需要注意的是,如果已经被算出结果的值不需要再算一遍。 所以整个dfs的结构是,算出上下左右的值,找到最大的那个,当前值是四周比它小的最长序列的长度+1,否则为1 阅读全文