- 博客(8)
- 收藏
- 关注
原创 二叉树遍历
经典的问题为前序、中序、后序遍历的代码实现。用递归函数实现比较简单,而用循环的方式实现则比较有挑战性,特别是后序遍历的循环实现。在这类问题下,需要将一些节点存储起来,并且后续会需要优先访问最近存入的节点,就可以用到“栈”这个数据结构。具体参见下面第一个代码块的代码实现。推而广之,还有层序遍历等一系列题目。参见二叉树的层序遍历import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode le
2020-12-06 20:18:33
165
原创 《编写可读性代码的艺术》阅读笔记
一、把信息装在变量名字里。二、变量、函数名不应让人误解。三、注释写的应该是常量含义、代码段所用解决方法思想这样的从代码本身难以快速推断的信息四、相对于追求最小化代码行数,一个更好的度量方法是最小化人们理解它所需要的时间。五、一次只做一件事。包括将不同功能用函数块分离,不同功能代码块用空格隔开等。六、用自然语言表达想代码想做的事,借以梳理逻辑、组织代码。七、少写代码。(剪去不...
2019-07-22 08:27:22
258
原创 二叉搜索树转化为有序双向链表
采用递归的方法实现,具体如下:def Tree2List(root): if not root: return None, None if root.left: head, _tail = Tree2List(root.left) _tail.right = root root.left = _tail.righ...
2018-10-03 15:40:12
266
转载 实现循环队列
这里使用C++实现template <class T>class CycleQueue{private: unsigned int m_size; int m_front; int m_rear; T* m_data;public: CycleQueue(unsigned size) : m_rear(0), m_front(0) { m_size = ...
2018-09-17 11:34:13
175
原创 判断完全多部图
完全多部图定义如下,给定一个无向图,图中包括n个点和m条边,保证无自环,两个点之间只有一条边。在这个图中,如果所有的点可以被划分为多个类,使得每一类的点两两之间没有连接,不同类别的任意两点之间有边连接,那么就称这个图是完全多部图。这里的问题就是,给定一些点和边,如何用编程的方法判定这个图是否是完全多部图。举个例子,下面这个图就是完全多部图,我们可以如此分类:[1, ], [2, 3, 4]...
2018-09-11 10:31:02
2225
原创 LeetCode148. SortList
题目描述:Sort a linked list in O(n log n) time using constant space complexity.解题思路:排序不难,难的是在题目给定的条件下进行排序。首先想到快排序。无奈发现单链表中交换元素很麻烦,放弃这个思路。接着想到归并排序,单链表中划分两个区域,归并,都很方便。自顶向下的归并排序,空间复杂度为log(n)(n为链表长度...
2018-08-05 21:32:29
133
原创 【数据库】每天都做新题的用户有多少人?
题目描述:数据库构造如下:第一列表示用户ID,第三列表示用户做的这道题的题目ID,第二列表示用户做这道题的日期。这里我们定义用户第一次做了某道题目,那么用户就做了新题。问题是在以上的数据库中,求从10-1到10-2每天都做新题的用户由多少人解题思路:首先抽出当天做新题的同学;接着统计那些从10-1到10-10每天都做新题的同学。第一个问题,可以先抽出当天的uid-pid对;再和当天之前的数据中匹配...
2018-06-19 11:36:25
1113
原创 LeetCode34. Search for a Range
题目:Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the ...
2018-06-12 11:12:43
187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人