Leetcode #1 Two Sum

  1. 题目大意
    给定一个整数数组(Integers Array),让你找出两个数 使得他们的和正好等于给定的值(Target),返回这两个数的下标。保证只有唯一解

  2. 题目分析
    这个题目题意清晰,要注意两点:

    • 返回下标,而不是数字本身,且下标是升序的。
    • 只有唯一解(这给我们带来了很大便利)
  3. 解法

    1. 我们很直接就能想到暴力解法(Brutal Force)
      利用二维循环,去扫描每一个数,找到的即为答案,注意这种办法在解不唯一且要 输出所以解的时候也适用。很显然,这个暴力算法的

      • 时间复杂度(Time Complexity)是 O(n2)O(n^2)
      • 空间复杂度是(Space Complexity) 是O(1)O(1),因为算法运行并没有利用额外的空间

      伪代码如下:

         for(i=0;i<ArrayLen;i++)for(j=0;j<ArrayLen;j++){if(Array[i] + Array[j] == Target){//return i,j}}
      
    2. 利用Hashmap 将我们有什么数存下来,当遇到一个数的时候,直接去存的地方看看它配对的那个数(Target - CurrentNumber)以前出现过没有,如果出现过,则找到了答案,否则将这个数也加入hashmap,继续往下找。不过Hashmap实现的时候不同语言就有不同的办法了。

      1. Python
        Python 的内建类型set 和dict是利用hash 实现的 所以查找的复杂度为O(1)O(1).
        而list 的查找并不是基于has key,所以复杂度近似为O(n)O(n),并不能提高算法效率。

      2. C++
        利用 map即可

      3. C
        以上两种语言(还有java等等)都是利用自带或者库里的方法直接实现hash,可是对于C语言来说,hash 就需要自己实现了。

        • 首先,我们需要确定hash key对于一个数字value如何在O(1)O(1)时间内确定它在table里的位置。这里需要一个map functon即
          F(value)=indexF(value) = index
        • 最简单的映射函数就是用value 直接作为下标,为了节省些许空间和处理负数,可以对坐标作关于最小值的线性变换
        • 通常映射函数是f(value)=valuemodnf(value) = value \quad mod \quad n n通常选一个质数来减少冲突。当冲突发生了,可以采用open(把它往后面空的地方丢)、close(下拉一个链表存所有下标一样但值不一样的数) 或者用双hash表。在此不再赘述

    4.代码

     def twoSum(self, nums, target):NumHash = {}for index, cur_num in enumerate(nums):need_num = target - cur_numif need_num in NumHash:return [NumHash[need_num], index]else:NumHash[need_num] = index

    未来有机会补上C和C++ 代码

    5.总结思考

    首先如果解不唯一,需要输出所有解或者最小的解(下标之和),还有没有O(n)O(n)的办法,该怎么写呢。
    可以尝试用C 实现hash,来理解几种冲突的解决办法

Leetcode #1 Two Sum相关推荐

  1. leetcode 304. Range Sum Query 2D - Immutable |304. 二维区域和检索 - 矩阵不可变(二维前缀和问题)

    题目 https://leetcode.com/problems/range-sum-query-2d-immutable/ 题解 本题是 medium 难度,二维前缀和问题.相似题目有: Easy: ...

  2. 【动态规划】LeetCode 377. Combination Sum IV

    LeetCode 377. Combination Sum IV Solution1: 我的未能AC的答案 题目描述的和前几道题差不多,但实际上不能用DFS来做(会超时),要用动态规划,还是记录一下吧 ...

  3. 【DFS】LeetCode 39. Combination Sum

    LeetCode 39. Combination Sum Solution1: DFS,这个套路要熟记啊! class Solution { public:vector<vector<in ...

  4. LeetCode 167.Two Sum II 解题报告

    LeetCode 167.Two Sum II 解题报告 题目描述 Given an array of integers that is already sorted in ascending ord ...

  5. leetcode 1005 Maximize Sum Of Array After K Negations

    leetcode 1005 Maximize Sum Of Array After K Negations 1.题目描述 2.解题思路 3.Python代码 1.题目描述 给定一个整数数组 A,我们只 ...

  6. [勇者闯LeetCode] 1. Two Sum

    [勇者闯LeetCode] 1. Two Sum Description Given an array of integers, return indices of the two numbers s ...

  7. [勇者闯LeetCode] 112. Path Sum

    [勇者闯LeetCode] 112. Path Sum Description Given a binary tree and a sum, determine if the tree has a r ...

  8. 数据结构线段树介绍与笔试算法题-LeetCode 307. Range Sum Query - Mutable--Java解法

    此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解文章分类:LeetCode题解文章集合 LeetCode 所有题目总结:LeetCode 所有题目总结 线段树(Segme ...

  9. LeetCode 653. Two Sum IV - Input is a BST--Python解法

    题目地址:Two Sum IV - Input is a BST - LeetCode Given a Binary Search Tree and a target number, return t ...

  10. LeetCode 167. Two Sum II - Input array is sorted--Python解法

    题目地址:Two Sum II - Input array is sorted - LeetCode Given an array of integers that is already sorted ...

最新文章

  1. 备份一个万能网卡驱动
  2. SAP WM 自动创建TO单的JOB运行报错 - Enter the storage unit type - 对策
  3. Pycharm 基本快捷键
  4. 主成分分析 PCA算法
  5. VB 判断IP能否ping通
  6. Vue实现按钮和文本框的切换
  7. android 获取系统所有安装的应用程序
  8. Java 集合系列18之 Iterator和Enumeration比较
  9. 取消锚(a/)点击后页面跳转的几种方法
  10. C语言练习:第二大整数
  11. 如何实现博客的评论和回复功能
  12. 2022-2027年中国暖气片行业市场全景评估及发展战略规划报告
  13. 计算机界一些有意思的命名,程序员们也都很有情调嘛!
  14. 如何才能成为一名优秀的设计师?
  15. Unity3D深入浅出 - Shader基础开发
  16. 计算机网络-网络应用(上)
  17. 有道云笔记的markdown编辑器如何通过mathtype来写公式
  18. 高级计算机网络管理员试题及答案,2016年计算机软考网络管理员测试题及答案...
  19. SAP-MM知识精解-批次管理(06-01)-批次确定的概览及主要逻辑
  20. python 免费空间_免费云空间/VPS AppFog申请及Python Web应用开发与上传实战

热门文章

  1. 集合:映射,单射,满射,双射
  2. 疑似集体出走,支付宝蚂蚁庄园小鸡不见了
  3. Web安全工程师成长路线
  4. 软件测试从业者年纪大了以后该怎么办?我能继续测试!可以自救...
  5. 多文件自平衡云传输 (六)番外篇 —————— 开开开山怪
  6. 简单制作一个百度注册页面
  7. ODrive干货 #3 ODriveTool 指令大全
  8. 罗宾斯管理学13版pdf_罗宾斯管理学13版答案pdf
  9. 罗兰贝格 | 适者生存:VUCA的世界
  10. 上海十大最美婚纱摄影外景地推荐