Skip to content

【091-week2】学习总结 #359

Open
@DevinSu

Description

@DevinSu

解题思考
异位词,字符相等,所以一定是长度相等-边界条件
正常处理字符串问题,考虑用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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions