Open
Description
解题思考
异位词,字符相等,所以一定是长度相等-边界条件
正常处理字符串问题,考虑用hash形式
之前解异位词的时候,一直考虑用数组的数据结构 去做,思路就是用下标作为key,数组值作为value,当然有时候其实也可以反过来。
循环遍历字符串s,t的字符, s中的字符对应的数组++ t对应的数组--
最终再遍历一遍这个数组,如果是异位词一定都为0;
这次还考虑用hashmap
在java中说到hash肯定是hashmap 之所以之前没用它,考虑到存储的对象初始化时候 null 而不是0
所以++ --不太好处理。
这次想清楚了其中的关系:和数组的思路一致,只是要做特殊处理
在同一个循环里,若果map中s对应的字符不存在 置为1 若存在则++
若map中t对应的字符不存在,则置为-1,若存在则置为--。
最后遍历map
还有一种解法就是异或的形式
异或的思想
相同为0
不同为1
若都相同则为0
第二道题时候
求二叉树中第二小的节点
当时根据条件直接考虑
每个节点只能有两个孩子或者没有孩子,它小于等于它的孩子节点值,所以根节点时最小的节点
相当于找左右子孩子中不等于根节点且最小的一个,递归或者按层遍历
我考虑到了层序遍历:遍历所有元素找到不等于根结点值中最小的一个值
提交的时候出现问题,当时我设置了result=Integer.MAX_VALUE,但是测试用例中有这个最大值这个特殊情况,最后试了很多办法,最终设置了一个flag标识位,在修改result的地方,如果碰到待修改的这个值是MAX_VALUE则置一个不打印-1 的标识。(正常流程是如果最后遍历完,result还是初值MAX_VALUE,则说明没找到对应的值,打印-1)
Metadata
Metadata
Assignees
Labels
No labels