LeetCode

2、两数相加

链表结构与树的结构类似,但是链表只有节点值和下一节点两个属性,因此除了递归,也可以通过循环来遍历。

3、无重复字符的最长子串

滑动窗口

4、寻找两个有序数组的中位数

奇偶数判断:

  • 通过 a % 2 != 0 来判断
  • 通过 ( a & 1) == 1 来判断(推荐使用,位操作,性能更优)
  • 通过 a % 2 == 1 来判断是错误的,原因:负奇数对 2 取余的结果为 -1

6、Z 字形变换

  1. 实际行数为设定的行数与字符串字符数中的最小值
  2. 每一行都用一个StringBuilder来存放,所有的StringBuilder存放在ArrayList中
  3. 依次遍历字符串,使用当前行和当前方向这两个变量对合适的行进行跟踪
  4. 只有当我们向上移动到最上面的行或向下移动到最下面的行时,当前方向才会发生改变
List list = new ArrayList(5);  

ArrayList 构造时可以指定初始容量,但此时 list.size() = 0,因为 size() 返回的是当前 list 中有多少个元素在存放,需要通过 list.add() 方法向 list 中添加元素。

ArrayList 每次新增一个元素,就会检测 ArrayList 的当前容量是否已经到达临界点,如果到达临界点则会扩容 2 倍。然而ArrayList的扩容以及数组的拷贝生成新的数组是相当耗资源的。因此, 对于已知的情景,请为集合指定初始容量。

继续阅读“LeetCode”