程序笔记   发布时间:2022-07-10  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了剑指 Offer 57. 和为s的两个数字大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

方法一:Set

set中存target - num,当遇到num时返回。或者set中存num,当遇到target - num时返回。

 1@H_675_7@ /*@H_675_7@*
@H_675_7@ 2@H_675_7@  * @param {number[]} nums
@H_675_7@ 3@H_675_7@  * @param {number} target
@H_675_7@ 4@H_675_7@  * @return {number[]}
@H_675_7@ 5@H_675_7@  */@H_675_7@
 6@H_675_7@ @H_616_30@var@H_675_7@ twoSum = function(nums, target) {
@H_675_7@ 7@H_675_7@     let hash = @H_616_30@new@H_675_7@ Set();
@H_675_7@ 8@H_675_7@     @H_616_30@for@H_675_7@(num of nums) {
@H_675_7@ 9@H_675_7@         @H_616_30@if@H_675_7@(hash.has(target - num)) {
@H_675_7@10@H_675_7@             @H_616_30@return@H_675_7@ [num, target - num];
@H_675_7@11@H_675_7@         }@H_616_30@else@H_675_7@ {
@H_675_7@12@H_675_7@             hash.add(num);
@H_675_7@13@H_675_7@         }
@H_675_7@14@H_675_7@     }
@H_675_7@15@H_675_7@     @H_616_30@return@H_675_7@ @H_616_30@null@H_675_7@;
@H_675_7@16@H_675_7@ };

 

方法二 双指针

题设给的nums是有序的,所以用i  j两个指针从前后同时寻找,两数之和大于target时 j 左移,小于target时 i 右移。

 1@H_675_7@ /*@H_675_7@*
@H_675_7@ 2@H_675_7@  * @param {number[]} nums
@H_675_7@ 3@H_675_7@  * @param {number} target
@H_675_7@ 4@H_675_7@  * @return {number[]}
@H_675_7@ 5@H_675_7@  */@H_675_7@
 6@H_675_7@ @H_616_30@var@H_675_7@ twoSum = function(nums, target) {
@H_675_7@ 7@H_675_7@     @H_616_30@if@H_675_7@(nums.length < 2@H_675_7@) @H_616_30@return@H_675_7@ @H_616_30@null@H_675_7@;
@H_675_7@ 8@H_675_7@     let res = [], i = 0@H_675_7@, j = nums.length - 1@H_675_7@;
@H_675_7@ 9@H_675_7@     @H_616_30@while@H_675_7@(i < j) {
@H_675_7@10@H_675_7@         @H_616_30@if@H_675_7@(nums[i] + nums[j] == target) @H_616_30@return@H_675_7@ [nums[i], nums[j]];
@H_675_7@11@H_675_7@         @H_616_30@if@H_675_7@(nums[i] + nums[j] > target) {
@H_675_7@12@H_675_7@             j--;
@H_675_7@13@H_675_7@         }@H_616_30@else@H_675_7@ {
@H_675_7@14@H_675_7@             i++;
@H_675_7@15@H_675_7@         }
@H_675_7@16@H_675_7@     }
@H_675_7@17@H_675_7@     @H_616_30@return@H_675_7@ @H_616_30@null@H_675_7@;
@H_675_7@18@H_675_7@ };

 

大佬总结

以上是大佬教程为你收集整理的剑指 Offer 57. 和为s的两个数字全部内容,希望文章能够帮你解决剑指 Offer 57. 和为s的两个数字所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。