编程问题

  1. 计算数组长度的函数是len(), 而非length()
  2. Python循环语句应使用冒号:,而非花括号(C的语法)
  3. 计算坐标时,期望结果是整数,应该使用双斜线//,而非单斜线/
  4. 一定要检查边界问题,避免无限循环。比如二分查找左闭右开的left_idx必须有变化,要考虑计算结果tmp_idx==left_idx的情况(+1即可排除当前tmp)
  5. 不要在Python中用C风格的for循环,要用 for 变量 in 范围
  6. Python新建空数组,没有默认索引。所以采用nums.append()添加新元素,而非用索引的方式添加

困惑

  1. 为什么无论左边界是开的还是闭的,二分查找的左边界更新都要+1?但是右边界就是开则正常,闭则+1.

PLUS

  1. 在想用新数组替代旧数组时,探索双指针解法的可行性,在一个数组上完成操作
  2. 如果想对Python数组的每个元素进行同样的操作,不妨想想下面的简洁写法:

new = [num * num for num in nums]

  1. 双指针很有趣,今天的二分查找、移除元素、有序数组的平方都可以用它解决