136.single-number

我的思路:

定义一个字典,

开始沥遍list

如果指向的数字 在字典里出现数 不等于1, 就让value=1(等于一,就加一)

然后沥遍字典,找到value等于1的位置,再读出key的数字

结果:速度太慢

solution:

没看到空间复杂度o(1)

异或逻辑运算:

待更新

leetcode 0121.best-time-to-buy-and-sell-stock

我的思路:

首先假设第一天肯定买进,然后从第二天开始看

情况一:如果第二天的价格低于第一天,那就以第二天的买价为准

以此类推

情况二:如果盈利天时,就开始计算之后每一天的差价,并记录最高价

每次发现有情况二发生,比较当前差价和上次计算差价,取其最大值

结论:8800ms 问题在情况2判断是 时间复杂度在o(n)级别

对比参考答案

发现盈利天时,将当天受益和当前最佳受益(初始值0,即平仓线)直接对比

如果当天收益更高,直接更新最佳受益计数

结论:60ms

总结:

条件一,找买入时机,条件二,找卖出时机

Python loop 心得

  1. input 默认接受的是字符格式 如果需要用来当作数字运算 需要转换成int格式
  2. 倒序沥遍list
    1. 在打印位置i的时候 改成(长度-i)
    2. 把选择沥遍的list,改成range(len,-1,-1)
      1. 即直接生成倒序的i
  3. print 字符串可以用逗号连接,不一定要concat“+”
  4. 正则表达式复习 no.15
  5. no33, 日期有没有更好的判定法
  6. 数字交换,常规解法是用个temp来暂存,python支持写‘一行’直接交换