LeetCode 算法题解 js 版 (001 Two Sum)
LeetCode 算法题解 js 版 (001 Two Sum)
两数之和
https://leetcode.com/problems/two-sum/submissions/
https://leetcode-cn.com/problems/two-sum/submissions/
1. 暴力解法
Time complexity: O(n**2)
Space complexity: O(n)
"use strict";
/**
* @author xgqfrms
* @description leetcode problems: two-sum & https://leetcode.com/problems/two-sum/
* @language JavaScript & ES6
*
* @param {Int Number Array} nums
* @param {Int Number} target
* @return {Int Number Array} result
*
*/
let twoSum = (nums = [2, 7, 11, 15], target = 9) => {
let result = [];
for(let i = 0; i < nums.length; i++){
for(let ii = 0; ii < nums.length; ii++){
let temp_a = nums[i];
let temp_b = nums[ii];
if(ii !== i){
let temp_result = temp_a + temp_b;
if(temp_result === target){
// 1. reset;
// result = [];
// result.push(i);
// result.push(ii);
// 2. remove duplication
if(!result.includes(i)){
result.push(i);
}
if(!result.includes(ii)){
result.push(ii);
}
result.sort();
}
}else{
// break;
}
}
}
return result;
};
2. 一遍 Hash Table
Time complexity: O(n)
Space complexity: O(n)
// Time complexity: O(n)
// Space complexity: O(n)
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let result = [];
// 空间换时间 HashMap / Object
const obj = {};
for(let i = 0; i < nums.length; i++) {
let temp = target - nums[i];
if(obj[nums[i]] !== undefined) {
result = [obj[nums[i]], i];
break;
} else {
obj[temp] = i;
}
}
return result;
};
ES6
Map & WeakMap
bugs
// bug
/*
var twoSum = function(nums, target) {
let result = [];
for(let i = 0; i < target; i++) {
let temp = target - i;
if(nums.includes(temp) && nums.includes(i)) {
result = [nums.indexOf(i), nums.indexOf(temp)];
break;
}
}
return result;
};
*/
best solutions
https://leetcode-cn.com/submissions/detail/112453419/
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
var map=new Map();
for(let i=0;i<nums.length;i++){
if(!map.has(target-nums[i])){
map.set(nums[i],i);
}else{
return [map.get(target-nums[i]),i]
}
}
};
/**
* 注:此题使用ES6的Map,使得时间复杂度降为O(n)
* 关于Map和Set的使用要重点掌握!!!
* 我觉得思路很棒,继续理解!
*/
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let i = nums.length;
while(i > 1) {
let last = nums.pop();
if (nums.indexOf(target - last) > -1){
return [nums.indexOf(target - last),nums.length];
}
i--
}
}
refs
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
LeetCode 算法题解 js 版 (001 Two Sum)的更多相关文章
- 常见排序算法(JS版)
常见排序算法(JS版)包括: 内置排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序(递归 & 堆栈),归并排序,堆排序,以及分析每种排序算法的执行时间. index.html <! ...
- Twitter面试题蓄水池蓄水量算法(原创 JS版,以后可能会补上C#的)
之前在群里有人讨论Twitter的面试题,蓄水池蓄水量计算,于是自己写了个JS版的(PS:主要后台代码还要编译,想想还是JS快,于是就使用了JS了.不过算法主要还是思路嘛,而且JS应该都没问题吧^_^ ...
- 十大经典排序算法的JS版
前言 个人博客:Damonare的个人博客 如遇到问题或有更好的优化方法,可以: 提issue给我 或是pull requests 我都会看到并处理,欢迎Star. 这世界上总存在着那么一些看似相似但 ...
- LeetCode算法题解
1.给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?(181) 解法一:举例说明,为了减少复杂度,就使用八位二进制吧. ...
- 好玩的算法(JS版)
1.字符串反转 'cba'.split('').reverse().join(''); 2.在数组最后一位添加一项 array[array.length]=(new value);
- LeetCode算法题-Two Sum II - Input array is sorted
这是悦乐书的第179次更新,第181篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第38题(顺位题号是167).给定已按升序排序的整数数组,找到两个数字,使它们相加到特定 ...
- LeetCode算法题-Two Sum IV - Input is a BST(Java实现)
这是悦乐书的第280次更新,第296篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第148题(顺位题号是653).给定二进制搜索树和目标数,如果BST中存在两个元素,使得 ...
- LeetCode算法题-Path Sum III(Java实现)
这是悦乐书的第227次更新 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第94题(顺位题号是437).您将获得一个二叉树,其中每个节点都包含一个整数值.找到与给定值相加的路径数 ...
- LeetCode算法题-Sum of Left Leaves(Java实现)
这是悦乐书的第217次更新,第230篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第85题(顺位题号是404).找到给定二叉树中所有左叶的总和.例如: 二叉树中有两个左叶 ...
随机推荐
- 电脑微信电脑PC 多开/防撤回 补丁
简介 经常使用微信电脑版的用户都会发现一个蛋疼的事情,那就是微信PC版不支持多开,也就是不能同时登陆多个账号,这对于需要在电脑上登陆多个微信账号的朋友来说肯定是极其的不方便.另外有的时候别人撤回了一些 ...
- qbxt 学习笔记 10.2 晚
目录 整除性 素数 组合数 Lucas 定理: 整除性 直接搬 ppt 特殊的整除性质 素数 素数定理: 线性筛: 原理:一个合数只由其最大素因子筛去. 代码: 组合数 Lucas 定理: \[\bi ...
- java+js正则表达式获取URL(带端口)域名
function isPassUrl(remoteLoginUrl){ var flag = false; var passUrlStr = document.getElementById(" ...
- OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04)
OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04) 单纯简单的 OpenCV 安装配置方法,在这个地 ...
- PAT(乙级)2020年秋季考试
比赛链接:https://pintia.cn/market/item/1302816969611366400 7-1 多二了一点 (15分) 题解 模拟. 代码 #include <bits/s ...
- 矩阵树定理(Kirchhoff || Laplace)初探——Part 1(无向图计数)
必备知识: 高斯消元,图论基本知识(好像就这...(雾)) 这里是无向图部分,请不要走错场... 定义 我们将邻接矩阵定义为矩阵A(u,v),我想邻接矩阵就不用再多说了: 我们将每个点的度数矩阵定义为 ...
- P2762 太空飞行计划问题 (最小割)
题意:n个实验 每个实验可获利ai元 做每个实验需要几个仪器 购买每个仪器有不同的花费 不同实验可能会用到同一个仪器 只用购买一次 求最大收益 题解:......................... ...
- hdu4507吉哥系列故事——恨7不成妻 (数位dp)
Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: ...
- hdu4920Matrix multiplication (矩阵,bitset)
Problem Description Given two matrices A and B of size n×n, find the product of them. bobo hates big ...
- hdu2825 Wireless Password(AC自动机+状压dp)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...