Amazon 题库 Array 总结

91 阅读1分钟

1. Two sum

  • hashmap
  • 一个for循环搞定, 边循环边寻找,一旦找到就break
  • 先判定再往map里put元素, 以防两个相同元素。
  • O(n)

3. Longest Substring Without Repeating Characters

  • two pointer
  • 用一个hashmap记录位置
  • 原则: 两个指针永不后退
  • 更新start:当end上发现相同字符,为防止start后退,Math.max(map.get(s.charAt(end)) + 1, start);
  • O(n)

11. Container With Most Water

  • two pointer
  • 分别从左右开始
  • 小的那一个变化

8. String to Integer (atoi)

  • 清空格。 记符号, 查溢出
  • 将数字字符变为int : int num = str.charAt(i) - '0';
  • 检查溢出的时候切记用max/10, 注意检查时也不要溢出

15. 3Sum

  • 双指针找sum
  • 每个情况都要判定是否是重复数字
  • 开始的时候sort, 之后num[i]就跳出, 不可能成功了
  • list里加数组: res.add(Arrays.asList(num[lo], num[hi], num[i]))

28. Implement strStr()

  • 双指针, haystack一个指针, needle一个指针
  • 外层循环指针: i < haystack.length() - needle.length() + 1, 超过就没必要继续了

48. Rotate Image

  • 分两次循环

    • 1 2 3 => 7 8 9 => 7 4 1
    • 4 5 6 => 4 5 6 => 8 5 2
    • 7 8 9 => 1 2 3 => 9 6 3
  • 第一次: 把上面的下面的整行交换

  • 斜对角交换

  • 08/16/20