惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
WordPress大学
WordPress大学
U
Unit 42
I
InfoQ
A
About on SuperTechFans
宝玉的分享
宝玉的分享
J
Java Code Geeks
博客园 - 司徒正美
爱范儿
爱范儿
Engineering at Meta
Engineering at Meta
G
Google Developers Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
腾讯CDC
Recent Announcements
Recent Announcements

Giscafer's blog

博客停更说明 使用 ViewContainerRef 探索Angular DOM操作 GIS520论坛关闭停止运营 ionic3之组件封装篇 ionic3之图片选择插件com.synconset.imagepicker ionic3开发遇到的一些问题及解决方法 ionic3之自定义tabs菜单图标 ionic3 之Android的actionsheet渲染和ios一致 Hexo博客畅言评论插件试用 从GISer到互联网前端工程师,JUST DO IT angular实现IM聊天图片发送 Cafe主题v1.0发布 React搭建百度前端技术学院习题演示SPA react-ponitor React 与 Redux 实践 —— 城市筛选面板 如何组件化开发WebGIS系统 2016年末总结 代码理解React组件生命周期过程 hexo-theme-cafe
1.Two Sum
2017-01-13 · via Giscafer's blog

原题地址:https://leetcode.com/problems/two-sum/

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution.

Example:
Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

方法一

正常两次循环,循环次数可能多,只要数组不是很大,效率还是很高的

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

/**

* @param {number[]} nums

* @param {number} target

* @return {number[]}

*/

var twoSum = function(nums, target) {

console.time('twoSum')

for(var i=0;i<nums.length;i++){

for (var j = 0; j < nums.length&& i!=j; j++) {

if(nums[j]+nums[i]===target){

console.timeEnd('twoSum')

var result=[i,j].sort();

return result

}

};

}

};

方法二

边循环边使用对象存储

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

var twoSum2 = function(nums, target) {

console.time('twoSum2')

var obj={};

for(var i=0;i<nums.length;i++){

if(obj[nums[i+'']]!==null && obj[nums[i+'']]!==undefined){

var result=[obj[nums[i]],i];

console.timeEnd('twoSum2')

return result;

}

obj[target-nums[i]]=i;

}

var result2=[];

return result2;

};

测试结果,建议使用更大的数组测试,才会看到twoSum2方法效率高

1

2

3

4

var nums = [2, 7, 11, 15], target = 9;

// var nums = [11, 15, 9,1,1,3,1,11, 15, 9,1,1,3,1,1,1,1,1,2,7,3], target = 9;

twoSum(nums,target);

twoSum2(nums,target);

经测试,在小数组时,twoSum方法twoSum2快很多,当数组变大时,twoSum2算法更快

推荐文章