啊~~~三数 你比两数多一数本文答案参考自leetcode官方题解,我来为大家科普一下关于leetcode最长无重复字符串?以下内容希望对你有帮助!

leetcode最长无重复字符串(Leetcode简洁笔记第15题三数之和)

leetcode最长无重复字符串

啊~~~三数 你比两数多一数

本文答案参考自leetcode官方题解

【方法1】比双重for循环更暴力的三重for循环【时间复杂度 O(n^3) 空间复杂度 O(1)】

就是在双重for循环 外再一个for循环。[笑哭][得意](答案记得去重)

什么叫暴力算法啊~(战术后仰)——《六学》

【方法2】排序 双指针【时间复杂度 O(n^2) 空间复杂度 O(log n)】

排序是为双指针打基础

双指针法 我们在 「Leetcode简洁笔记」第11题:盛最多水的容器 见过了

在本题中:

  1. 仍然使用三重for循环的大框架
  2. 使用 a,b,c 三个指针,a 是外面的循环的指针,b 是中间循环的指针,c 是最里面的循环的指针
  3. 与方法1不同,我们使 b 指针在最左侧,而 c 指针在 最右侧
  4. 每次循环 c 指针向左移动,直至符合三数之和等于0 或 三数之和小于等于0 或 b,c 指针重合

三数之和小于等于0 就可以结束循环 是因为数组已经排过序了,三数之和小于等于0 那么之后的三数之和也肯定不等于0

发现规律:当我们需要枚举数组中的两个元素时,如果我们发现随着第一个元素的递增,第二个元素是递减的,那么就可以使用双指针的方法,将枚举的时间复杂度从 O(n) 变为 O(n)(摘自leetcode官方)

注意 排序 也是需要时间和空间的

,