0%

用哈希集合存储元素,可以在O(1)的时间内判断一个元素是否在集合中,从而降低时间复杂度。

阅读全文 »

300. 最长递增子序列

复杂度最低的方法: 二分 + 贪心

阅读全文 »

[TOC]

03.01.三合一

用一个数组实现三个栈。

分析:

可以通过将数组的前三分之一分配到第一个栈,第二个三分之一分配到第二个栈,最后的第三个三分之一分配到第三个栈。来模拟数组中的三个栈。实际上某个栈可能比其他的更大,这种平均的分法就不可行了。如果考虑灵活划分,可以移动栈,要保证使用所有可用的容量,把数组看作是循环的。

也可以直接用二维数组来存三个栈。二维数组的每一行代表一个栈,同时使用一个locations记录每个栈待插入的下标。

阅读全文 »

160.相交链表

要找出并返回两个单链表相交的起始节点。

img

a2和b3可能值相等,但节点在内存中指向的是不同的位置,因此仍然是不同的节点。

阅读全文 »

[TOC]

Preface

  • problem-solving
  • for most beginner
  • computational thinking, abstraction, algorithms, data structures
  • program fundamentally and new language

The recommended workflow: watch lecture -> watch section -> watch shorts -> submit problem set

阅读全文 »

本文为在C++使用过程中的盲区与疑问记录,因为没有系统地学习过C++所以将会记录较多的基础知识。受时间限制,目前只能一点点积累基础,系统学习对时间demanding并且不面向应用,不能很好掌握。

阅读全文 »

层序遍历

层序遍历是二叉树中很重要的一个问题。

BFS要借助队列来完成,先把根元素加入队列。对队列进行非空循环,对节点的左右子节点进行判断,如果存在就加入队列。每次循环将出队的元素作为新的根节点。

阅读全文 »