摘要: 剑指 Offer 36. 二叉搜索树与双向链表 如果不考虑就地转换的话,可以注意到题目给出的二叉搜索树的条件,将所有的节点按照中序遍历的顺序添加进list中,再从头开始将right指针链好,再从尾部开始将left指针链好,再将头尾链好即可。 /* // Definition for a Node. 阅读全文
posted @ 2022-01-30 17:33 NullPointer_C 阅读(32) 评论(0) 推荐(0)
摘要: 剑指 Offer 34. 二叉树中和为某一值的路径 比较常见的回溯,但是回溯需要注意的小地方还是挺多的,特别是对于全局变量,因为它是所有栈空间共享的,所以当退出当前函数栈帧时,一定要将全局变量的栈帧恢复至入栈时刻的。 /** * Definition for a binary tree node. 阅读全文
posted @ 2022-01-30 16:37 NullPointer_C 阅读(33) 评论(0) 推荐(0)
摘要: 剑指 Offer 13. 机器人的运动范围 这题需要注意它和前一题的不同之处。前一题是要求搜索问题,已经搜索到的单词的字母,如'A',在这一轮的搜索中没有被用上,但是可能从'A'的上一步的其他方向可能又走到'A',所以要恢复现场。 但是这里要统计的不是是否可以达,而是要统计可达的格子数,格子如果已经 阅读全文
posted @ 2022-01-29 23:53 NullPointer_C 阅读(41) 评论(0) 推荐(0)
摘要: 剑指 Offer 12. 矩阵中的路径 dfs+剪枝问题。 这里由于是需要对所有的相邻节点尝试并且如果行不通需要重试,所以还需要回溯,回溯的过程中也有需要剪枝的地方,如走过的地方就不能再走,并且不能走出图外去。 这里我们用isContains表示这一轮的搜索是否搜到了要搜的字母,如果搜索到了,就继续 阅读全文
posted @ 2022-01-29 22:49 NullPointer_C 阅读(33) 评论(0) 推荐(0)
摘要: 剑指 Offer 58 - I. 翻转单词顺序 人生苦短,我用python class Solution: def reverseWords(self, s: str) -> str: return " ".join(s.split()[::-1]) 但是这样的方式太取巧了,对语言要求也高,所以就不 阅读全文
posted @ 2022-01-29 22:27 NullPointer_C 阅读(32) 评论(0) 推荐(0)
摘要: 剑指 Offer 57. 和为s的两个数字 首先就容易想到的就是暴力,但是我们一看数据范围,\(10^5\)。套$O(n^2)$一般来说一定会超时,经过实验也发现确实会超时。 class Solution { public int[] twoSum(int[] nums, int target) { 阅读全文
posted @ 2022-01-29 21:58 NullPointer_C 阅读(58) 评论(0) 推荐(0)
摘要: 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 这里可以考虑比较暴力的方式,先遍历一趟原数组$nums$,将奇偶数分开存储,再先遍历奇数列表,再遍历偶数列表,就可以保证奇偶数都按照顺序存储了。 class Solution { public int[] exchange(int[] num 阅读全文
posted @ 2022-01-29 21:33 NullPointer_C 阅读(36) 评论(0) 推荐(0)
摘要: 剑指 Offer 52. 两个链表的第一个公共节点 这里是一个比较典型的追及与相遇问题,假设公共段长度为l,链表A的总长度为a,单独段长度为a - l,链表B的总长度为b,单独段的长度为b - l,假如把a和b都看做弯曲并弯曲成圆形. 假设p和q分别从A,B的头结点开始追及,且两人速度一致,每次只走 阅读全文
posted @ 2022-01-26 23:57 NullPointer_C 阅读(28) 评论(0) 推荐(0)
摘要: 剑指 Offer 25. 合并两个排序的链表 双路归并即可, 总的时间复杂度为O(n),关键在于怎么优化空间,可以是O(n),也可以是O(1)。 这题可以利用给好的空间在原空间上操作,可以进一步优化空间,每次new出新空间比较费空间,因为也是存一样的数字,没必要new出空间来了。 /** * Def 阅读全文
posted @ 2022-01-26 23:33 NullPointer_C 阅读(25) 评论(0) 推荐(0)
摘要: Java8虽然提出了很多新特性,但是在日常写项目和编程实践的使用还不是特别熟悉,写这个专栏记录一下Java8的学习之路。 JDK5 自动装、拆箱 从JDK5开始为所有基本数据类型都提供了与之对应的包装类,使基本数据类型也能够以OOP的方式来操作。 int -->Integer double --> 阅读全文
posted @ 2022-01-25 16:32 NullPointer_C 阅读(538) 评论(0) 推荐(0)