leetcode算法题01
最近求职需要重新刷算法题,从今天开始每天至少做一个leatcode的题
如果有更好的算法或者换了语言也会更新
- 题目:
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
- 解法 :
官方给了三种解法:
是暴力循环,想的简单,易于理解,但是如果数组里元素很多的话就很卡,复杂度分析:
时间复杂度:O(n^2) ), 对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n) 的时间。因此时间复杂度为 O(n^2)。
空间复杂度:O(1)。是用哈希表循环两遍,第一遍是录入哈希表,第二遍再循环找一遍,
复杂度分析:时间复杂度:O(n), 我们把包含有 nn 个元素的列表遍历两次。由于哈希表将查找时间缩短到 O(1),所以时间复杂度为 O(n)。
空间复杂度:O(n), 所需的额外空间取决于哈希表中存储的元素数量,该表中存储了 n个元素。
是用哈希表循环一遍,在第一遍时一边录入一边排查,之前面试也碰到过这道题,当时面试官给的解法就是这种,相对理想
复杂度分析:
时间复杂度:O(n), 我们只遍历了包含有 nn 个元素的列表一次。在表中进行的每次查找只花费 O(1) 的时间。
空间复杂度:O(n), 所需的额外空间取决于哈希表中存储的元素数量,该表最多需要存储 n 个元素。代码
var twoSum = function(nums, target) {
var result=[];
var test=new hashTable();
// var i=0;
nums.forEach(function(item,index){
// console.log("success" +index);
if(test.containsKey(target-item)&&item==(target-item)){
result.push(test.getValue(target-item),index);
test.remove(target-item);
// console.log("same");
}
else {
test.add(item,index);
if(test.containsKey(target-item)&&index!==test.getValue(target-item)){
// result.push([test[item],test[target-item]]);
result.push(test.getValue(target-item),test.getValue(item));
test.remove(item);
test.remove(target-item);
// console.log("delete");
}
}
});
return result;
};
- 心得
题不难,主要是练习通过哈希表的排序是怎么用js实现的,哈希表的搜索简单快捷,实现起来也不难。之前没用js做过。
在调试的过程中出现了2回问题
刚开始我只是想把数组的值作为key,序号作为value,没有考虑当两个值都是一样的时候哈希表会覆盖,报了一回错,加了个if判断了一下,就解决了
数据范围考虑不全。没有考虑给的和等于他本身时的情况,报了一回错,加了个if判断了一下,就解决了。
更新
未来想用python实现一下,算法方面应该没什么可优化的了。
leetcode算法题01的更多相关文章
- LeetCode算法题-Subdomain Visit Count(Java实现)
这是悦乐书的第320次更新,第341篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第189题(顺位题号是811).像"discuss.leetcode.com& ...
- LeetCode算法题-Number of Lines To Write String(Java实现)
这是悦乐书的第319次更新,第340篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第188题(顺位题号是806).我们要将给定字符串S的字母从左到右写成行.每行最大宽度为 ...
- LeetCode算法题-Unique Morse Code Words(Java实现)
这是悦乐书的第318次更新,第339篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第186题(顺位题号是804).国际莫尔斯电码定义了一种标准编码,其中每个字母映射到一系 ...
- LeetCode算法题-Rotate String(Java实现)
这是悦乐书的第317次更新,第338篇原创 在开始今天的算法题前,说几句,今天是世界读书日,推荐两本书给大家,<终身成长>和<禅与摩托车维修艺术>,值得好好阅读和反复阅读. 0 ...
- LeetCode算法题-Rotated Digits(Java实现)
这是悦乐书的第316次更新,第337篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第185题(顺位题号是788).如果一个数字经过180度旋转后,变成了一个与原数字不同的 ...
- LeetCode算法题-Letter Case Permutation(Java实现)
这是悦乐书的第315次更新,第336篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第184题(顺位题号是784).给定一个字符串S,将每个字母单独转换为小写或大写以创建另 ...
- LeetCode算法题-Minimum Distance Between BST Nodes(Java实现-四种解法)
这是悦乐书的第314次更新,第335篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第183题(顺位题号是783).给定具有根节点值的二叉搜索树(BST),返回树中任何两个 ...
- LeetCode算法题-Jewels and Stones(Java实现)
这是悦乐书的第313次更新,第334篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第182题(顺位题号是771).字符串J代表珠宝,S代表你拥有的石头.S中的每个字符都是 ...
- LeetCode算法题-Toeplitz Matrix(Java实现)
这是悦乐书的第312次更新,第333篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第181题(顺位题号是766).如果从左上角到右下角的每个对角线具有相同的元素,则矩阵是 ...
随机推荐
- 学习MySQL过程中的随笔二
MySQL深入学习: 视图 使用视图的目的:多次使用同一张临时表(或者已经存在的表) 视图只是一个虚拟表,其本质为[根据SQL语句获取动态的数据集,并为其命名],用户只需使用别名即可获得实时的 ...
- angular4脚手架搭建
Angular4.X安装,创建 1.安装最新的nodejs(node -v ,npm -v) 2.新建文件夹(右键git bash here)npm install -g @angular/cli 3 ...
- 原生js 基于canvas写一个简单的前端 截图工具
先看效果 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- SWIT2019无线通信和信息技术国际研讨会(上海)
无线通信和信息技术国际研讨会(SWIT 2019)将于2019年6月29日至30日在中国上海皇冠晶品酒店举行.本次会议将讨论无线通信和信息技术问题.它致力于创造一个交流最新研究成果和分享先进研究方法的 ...
- js某一元素在数组中的索引
第一种:数组遍历 function search(arr,dst){ var i = arr.length; while(i-=1){ if (arr[i] == dst){ return i; } ...
- eclipse jpa 工具生成实体类
1,配置数据库连接 打开eclipse, 选择数据库: 下一步,选择驱动包 根据自己的驱动包路径选择对应的驱动包: 2,配置jpa-tool 在项目上面右键->properties 点击ok,然 ...
- Spring boot 源码分析(一)SpringApplication.run(上)
SpringApplication.run(Main.class, args); 从这个方法开始讲吧: public static ConfigurableApplicationContext run ...
- 网络-01-端口号-linux端口详解大全
0 | 无效端口,通常用于分析操作系统1 | 传输控制协议端口服务多路开关选择器2 | 管理实用程序3 | 压缩进程5 | 远程作业登录7 | 回显9 | 丢弃11 | 在线用户13 | 时间17 | ...
- React脚手架create-react-app
1.安装过程 $cnpm install -g -create-react-app $create-react-app apps $cd apps/ $npm start 2.图片路径 不能用相对路径 ...
- php 中 global 与 $GLOBAL 的区别
很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是$GLOBALS['var'] 是外部的全局变量$var本身. global $var 是外部$var的同 ...