游戏资讯网站怎么做,网站的建设与维护工资,集团网站建设基础方案,深圳品牌网站建设公司哪家好新年首刷
三数之和 感想 说实话我看到这个题目的时候第一个想法就是用四数相加去解决#xff0c;但是确实没有读题目的完全意思 用的方法是双指针法 假定有三个指针 我们希望找到所有不同的三元组 [nums[i], nums[j], nums[k]]#xff0c;使得 nums[i] nums[j] nums[k] 0…新年首刷
三数之和 感想 说实话我看到这个题目的时候第一个想法就是用四数相加去解决但是确实没有读题目的完全意思 用的方法是双指针法 假定有三个指针 我们希望找到所有不同的三元组 [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分别指向 -1 和 2。这里不会找到和为零的三元组因为最小的数已经是 -4。
迭代 2: i 1 (nums[i] -1)
左指针 left 2右指针 right 5分别指向 -1 和 2。第一次三数之和为 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 中将字符串转换为数组的方法主要有以下几种 使用 split 方法 这是最常用的方法。split 方法可以将字符串按照指定的分隔符拆分成数组。如果要将每个字符都分开成数组元素可以使用空字符串作为分隔符。示例let arr str.split(); 使用扩展运算符 ... 扩展运算符可以将字符串中的每个字符展开到数组中。示例let arr [...str]; 使用 Array.from 方法 Array.from 方法可以将两类对象转换为数组类数组对象拥有 length 属性和若干索引属性的任意对象和可迭代对象包括 ES6 新增的数据类型 Set 和 Map。示例let arr Array.from(str); 使用 Object.assign 方法 Object.assign 方法可以用来将字符串转换为数组但这种方法相对不太直观。示例let arr Object.assign([], str); 循环遍历字符串 通过循环遍历字符串的每个字符并将它们逐个添加到数组中。示例 let arr [];
for (let i 0; i str.length; i) {arr.push(str[i]);
}