想起来自己很久没用过github了,几天早上在github建了个库想把这几天写的东西试着传上去,碰到了一个问题
图片是从网上找的,当时忘截图了
我想了一下大概是我在创建远程库的时候勾选了生成readme那个txt文件,本地库没有,所以得先pull一下再push,但是我试了一下还是不对,网上的教程也差不多是先pull再push,我也没搞懂这个问题,只好又建了个完全空白的远程库。
收获:
1.复习了一下git和github的使用
2.以后要注意建立远程库时不要勾选生成readme,不如自己写一个
104.二叉树的最大深度
方案一:递归思想
注意到每一个二叉树的最大深度都是其左子树或者右子树最大深度加一得到的。
方案二:利用bfs,建立队列,每次都完整的入队一整层的元素,之后再将这一整层元素完全出队。与普通bfs一次出一个,压一个的左右儿子不同。
要用到一个标记变量用来记录当前这层一共有几个元素,当把这一层的元素的孩子们全部压入之后再根据这个size把父层的节点逐一poll。
收获:
1.注重利用递归表达式
2.方案二这个思想感觉挺巧妙的。我只想到bfs,但是以为bfs没法记录深度。
3.时刻要判断对象是否为null
1.两数之和
这个题暴力很简单,我还错了。没有好好读题(题目说不能有重复的)
所以不能简单地i和j分别从0到length,j应该从i+1开始,像冒泡一样,保证了ij不同还更快一些。
但是暴力这个方法本身就非常的慢,时间复杂度是n方
收获:
为了对运行时间复杂度进行优化,我们需要一种更有效的方法来检查数组中是否存在目标元素。如果存在,我们需要找出它的索引。保持数组中的每个元素与其索引相互对应的最好方法是什么?哈希表。
速度确实快了很多,
return new int[] {j,map.get(diff)};//这里的顺序要注意一下,应该是j在前面,因为j可以是从0开始的
问题
还有个问题就是有关数组初始化为null,然后再赋值会有什么问题
496.让用栈,但是感觉map好使一些,先处理一下num2,找到其中每个元素对应的最大值,然后存进map里,在遍历num1,用map.containkey
寻找num1元素对应的右侧第一个更大的值。
收获:
1.注意for循环,不要马虎。前面是i,后面就写成j了
2.善于利用map,map确实快