1. 两数之和
    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解题思路:
· for j := i+1;j < k;j++ ·j肯定大于i所以不需要在判断j的有效性,因此效率更高

func twoSum(nums []int, target int) []int {k := len(nums)for i := 0; i < k; i++ {tmp := nums[i]for j := i+1;j < k;j++ {if target == tmp + nums[j] {return []int{i, j}}}}return nil
}
vector<int> twoSum1(vector<int>& nums, int target) {int n = nums.size();for (int i = 0; i < n; i++){for (int j = i+1;j < n; j ++){if (nums[i] + nums[j] == target)return {i, j};}}return {};
}

使用C++求解:
解题思路,新建一个hash表, map键值对,将nums[i]作为hash表的key,对应的索引作为value,我们所要作的就是,在hash表中查找对应的target - nums[i]的key是否存在,若是存在就返回当前的value和对应的i,要是不存在就接着将对应nums[i]和索引按照键值对存入map,代码实现如下:

vector<int> twoSum2(vector<int>& nums, int target) {unordered_map<int, int> hashTable;for (int i = 0;i < nums.size(); i++) {auto it = hashTable.find(target - nums[i]);if(it != hashTable.end())return {it->second, i};hashTable[nums[i]] = i;}return {};
}
func twoSum(nums []int, target int)[]int {hashTable := map[int]int{}for i, x := range nums {if p, ok := hashTable[target - x]; ok {return []int{p, i}}hashTable[x] = i}return []int{}
}
//
// Created by andrew on 2021/3/5.
//
#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>using namespace std;// 暴力求解
class Solution {public:vector<int> twoSum1(vector<int>& nums, int target) {int n = nums.size();for (int i = 0; i < n; i++){for (int j = i+1;j < n; j ++){if (nums[i] + nums[j] == target)return {i, j};}}return {};}vector<int> twoSum2(vector<int>& nums, int target) {unordered_map<int, int> hashTable;for (int i = 0;i < nums.size(); i++) {auto it = hashTable.find(target - nums[i]);if(it != hashTable.end())return {it->second, i};hashTable[nums[i]] = i;}return {};}};int main(int argc, char *argv[])
{vector<int> nums = {2,7,11,15};vector<int> retVal = {};int target = 9;Solution solution;retVal = solution.twoSum1(nums, target);int n = retVal.size();for (int i = 0; i < n; i ++) {cout << retVal[i] << endl;}cout << "+++++++++++++++++++++++++++++++" << endl;retVal = solution.twoSum2(nums, target);n = retVal.size();for (int i = 0; i < n; i ++) {cout << retVal[i] << endl;}return 0;
}
package mainimport "fmt"func twoSum(nums []int, target int)[]int {hashTable := map[int]int{}for i, x := range nums {if p, ok := hashTable[target - x]; ok {return []int{p, i}}hashTable[x] = i}return []int{}
}func main() {var nums = []int{2, 3, 7, 11, 15}var target int = 9retVal := twoSum(nums, target)fmt.Println(retVal)
}

leetCode刷题第一天--求两数之和相关推荐

  1. Leetcode刷题(1)两数之和

    最好的种树是十年前,其次是现在.歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主  放弃很容易但是坚持一定很酷     我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的 ...

  2. ​LeetCode刷题实战371:两整数之和

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  3. Leetcode刷题笔记之445. 两数相加Ⅱ

    原题 给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储一位数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进阶 ...

  4. 【leetcode慢速刷题记录】1. 两数之和

    文章目录 前言 一.题目 二.方法 1.暴力破解 2.哈希表 其他一些总结 (1)关于unordered_map 前言 经典面试题,其实比较简单,但鉴于刷题一遍容易忘,还是记录一下. 一.题目 二.方 ...

  5. postgre非零相除等于0_LeetCode刷题实战29:两数相除

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  6. 用JavaScript刷leetcode(刷题 第一天)

    两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是, ...

  7. LeetCode刷题—第一周

    一.两数之和 题目链接:两数之和 1.题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标. 你可以假设每 ...

  8. python的return语句求两数之和_程序题(python解)

    PyCharm整理代码:Ctrl+Alt+l list行数:len(list) list列数:len(list[1]) 笔试常使用到的功能: 1.单独取出一长串字符中每个单独的字符: 输入'abcd' ...

  9. 不使用算术运算符(+/-)怎么求两数之和?

    今天遇到了这样一个题 题目说了不能用算数运算符,那么我们就只能从 逻辑运算符 和 移位运算符 入手了. 我们知道 ^ (异或)操作是对两个数进行无进位求和,如果两个数相加本来就不产生进位,那么该和就是 ...

最新文章

  1. 直博清华的小姐姐!本科就发表了SCI,享受朝九晚五的学习生活,做自己的小太阳!...
  2. 衡阳a货翡翠,南平a货翡翠
  3. iOS架构-xcodebuild常用命令(22)
  4. python中的decode函数在哪个模块_python3 中encode 和decode的使用方法。
  5. Cpp 对象模型探索 / 编译器为对象创建缺省构造函数的条件
  6. Bugku—web题解
  7. 导出合并小文件_关于微信语音导出,这个方法强烈建议~
  8. 微信小程序 获取OpenId
  9. 腾讯微博——点击按钮自动加关注代码
  10. 计算机图形图像项目教程素材,案例任务驱动法在图形图像教学中的运用
  11. BAT中cd某个目录时,同时转换盘符
  12. 快速理解卷积神经网络VGG16/VGG19,以及每个模块的作用及意义。
  13. js 生成条形码(JsBarcode.all.min.js)
  14. 智能道路中几个问题的探讨
  15. ug初始化错误未能创建服务器,UG10.0提示初始化错误-15的处理操作方法
  16. html在搜索按钮中加放大镜,用 CSS3 画心形和搜索放大镜图标
  17. selenium定位到元素后获取其属性_selenium定位tr及td,并获取其文本及属性
  18. ArcGIS水文分析实战教程(2)ArcGIS水文分析工具的基本原理
  19. 电脑主要硬件配置信息查询
  20. AV终结者病毒愈演愈烈

热门文章

  1. 我学员的一个问题及其我对之的解答,关于lr返回值问题
  2. NYOJ 106 背包问题
  3. 2-2 工程源码文件结构
  4. 20155330 《信息安全系统设计基础》课程总结
  5. 117. Populating Next Right Pointers in Each Node II
  6. xcode7,AFN不能使用的问题
  7. 财务管理的革新带动财务软件的变革
  8. distinct的用法
  9. 使用sprc097的DSP281x_usDelay.asm
  10. DRM-内容数据版权加密保护技术学习(上):视频文件打包实现(转)