【2024.01.02】刷算法07

新年首刷

三数之和

感想

说实话我看到这个题目的时候第一个想法就是用四数相加去解决,但是确实没有读题目的完全意思

用的方法是双指针法

假定有三个指针

我们希望找到所有不同的三元组 [nums[i], nums[j], nums[k]],使得 nums[i] + nums[j] + nums[k] == 0。下面是这个函数如何处理这个数组的:

步骤 1: 对数组进行排序

排序后的数组将是:

nums = [-4, -1, -1, 0, 1, 2]

排序是为了方便后续使用双指针技术,并且能更容易地跳过重复的元素

步骤 2: 遍历数组

外层循环从索引 i = 0 开始直到 nums.length - 2(因为我们需要至少三个数来形成三元组)。

迭代 1: i = 0 (nums[i] = -4)
  • 左指针 left = 1,右指针 right = 5(分别指向 -12)。
  • 这里不会找到和为零的三元组,因为最小的数已经是 -4
迭代 2: i = 1 (nums[i] = -1)
  • 左指针 left = 2,右指针 right = 5(分别指向 -12)。
  • 第一次三数之和为 0-1 + (-1) + 2 = 0。添加三元组 [-1, -1, 2] 到结果中。
  • 左右指针向内移动,跳过重复的 -1
接下来的迭代
  • 继续以同样的方式处理,直到 i 达到 nums.length - 2
  • i = 2 时(第二个 -1),由于它与前一个元素相同,会被跳过(避免重复的三元组)。

步骤 3: 返回结果

最终结果将是所有找到的不重复的三元组,对于这个示例,结果是:

[[-1, -1, 2], [-1, 0, 1]]

这个结果表明在数组 [-4, -1, -1, 0, 1, 2] 中,这两个三元组的和为零,并且不包含重复的三元组。

三数之和和四数之和都是为了找不同索引且之和相同的数组

 151. 反转字符串中的单词

 字符串转数组

在 JavaScript 中,将字符串转换为数组的方法主要有以下几种:

  1. 使用 split 方法

    • 这是最常用的方法。split 方法可以将字符串按照指定的分隔符拆分成数组。如果要将每个字符都分开成数组元素,可以使用空字符串作为分隔符。
    • 示例:let arr = str.split('');
  2. 使用扩展运算符 ...

    • 扩展运算符可以将字符串中的每个字符展开到数组中。
    • 示例:let arr = [...str];
  3. 使用 Array.from 方法

    • Array.from 方法可以将两类对象转换为数组:类数组对象(拥有 length 属性和若干索引属性的任意对象)和可迭代对象(包括 ES6 新增的数据类型 SetMap)。
    • 示例:let arr = Array.from(str);
  4. 使用 Object.assign 方法

    • Object.assign 方法可以用来将字符串转换为数组,但这种方法相对不太直观。
    • 示例:let arr = Object.assign([], str);
  5. 循环遍历字符串

    • 通过循环遍历字符串的每个字符,并将它们逐个添加到数组中。
    • 示例:
      let arr = [];
      for (let i = 0; i < str.length; i++) {
          arr.push(str[i]);
      }
      

相关推荐

  1. 【2024.01.02算法07

    2024-01-05 15:08:03       33 阅读
  2. 算法题day07

    2024-01-05 15:08:03       34 阅读
  3. 【12.29】转行小白历险记-算法05

    2024-01-05 15:08:03       32 阅读
  4. 【12.30】转行小白历险记-算法06

    2024-01-05 15:08:03       33 阅读
  5. 算法题day04-错误总结(Double精度)

    2024-01-05 15:08:03       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 15:08:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 15:08:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 15:08:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 15:08:03       18 阅读

热门阅读

  1. Linux 命令汇总

    2024-01-05 15:08:03       32 阅读
  2. Centos9快速安装docker快速安装MySQL

    2024-01-05 15:08:03       37 阅读
  3. CentOS 9 (stream) 安装 Docker

    2024-01-05 15:08:03       36 阅读
  4. PyTorch|transforms

    2024-01-05 15:08:03       37 阅读