摘要:
第一个if循环应该很容易看懂。 写一下为什么最后一个root节点不会一直返回,因为当某一个节点left和right都不为空,返回该节点后。 该节点的父节点肯定会有一边为空,而另一边就是上面返回的root节点。 就会执行左不为空返回右,右不为空返回左,向上返回找到的那个节点。 这种递归方法会遍历到每个 阅读全文
posted @ 2021-03-29 22:18
星予
阅读(46)
评论(0)
推荐(0)
摘要:
如果一个在根节点,另一个在其子树,返回root没毛病。 如果不是同时大于或小于,因为二叉搜索树性质,会分别在两边,返回root没毛病。 如果同时在一边,则当前节点不会是最近公共祖先,往子树递归,没毛病。 *注意要写3个return 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 /** 阅读全文
posted @ 2021-03-29 21:41
星予
阅读(33)
评论(0)
推荐(0)
摘要:
有一个小问题,首先用if(str == null) return 0;来判断特殊输入,这样是不行的。 后来用if(str.length() == 0)来判断,也是不行的。 因为可以有一个空字符,后面会越界。 正确的方法是在str.trim().toCharArray()后判断字符数组c的长度。 *还 阅读全文
posted @ 2021-03-29 21:27
星予
阅读(56)
评论(0)
推荐(0)
摘要:
感觉没啥好总结的…… 剑指 Offer 66. 构建乘积数组 class Solution { public int[] constructArr(int[] a) { if(a.length == 0) return new int[0]; int[] b = new int [a.length] 阅读全文
posted @ 2021-03-29 20:52
星予
阅读(33)
评论(0)
推荐(0)
摘要:
不知道怎么做,照搬K佬思想。 举例:a=0101 b=0111过程为: a=0101 b=0111 c= (a & b) << 1 = 1010 a^=b =0010 b=c =1010 c= (a & b) << 1 = 0100 a^=b =1000 b=c =0100 c= (a & b) < 阅读全文
posted @ 2021-03-29 19:39
星予
阅读(28)
评论(0)
推荐(0)
浙公网安备 33010602011771号