美文网首页前端开发互联网科技Web前端之路
基础算法 - 两数之和 (暴力循环和一遍哈希表)

基础算法 - 两数之和 (暴力循环和一遍哈希表)

作者: 蓝海00 | 来源:发表于2019-07-14 16:02 被阅读11次

题目

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

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

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

需求思路

  • 时间置换空间 想要空间 暴力循环
    时间最差解法 每次用目标值target 数组中的值(从数组下标0开始) 预测最后结果 然后循环数组每次对比是否有这个最后结果 有则返回 无则继续对比
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
  let res = undefined;
  for (let i = 0; i < nums.length; i++) {
    res = target - nums[i];
    for (let j = i + 1; j < nums.length; j++) {
      if (nums[j] == res) {
        return [i, j];
      }
    }
  }
};

从下面的执行用时和内存消耗可以看出 时间较长 但内存消耗较少

  • 空间置换时间 想要时间 一遍哈希表
    空间最差解法 每次用目标值target 数组中的值(从数组下标0开始) 预测最后结果 先判断新建的对象中是否存在最后结果 有则返回 无则将值添加至对象中继续比对
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
  let res = undefined;
  let obj = {};
  let arr = [];
  for (let i = 0; i < nums.length; i++) {
    res = target - nums[i];
    if (res in obj) {
      arr.push(obj[res], i);
      return arr;
    }
    obj[nums[i]] = i;
  }
};

从下面的执行用时和内存消耗可以看出 时间较短 但内存消耗较多

从此题引升到前端思路

思考懒加载和预加载

  • 懒加载
    时间置换空间 可能随着滚动条的滚动 会重新加载当前所需的图片 可能优先加载较小的图片 按需加载 减少了加载页面时候的内存占用 将需要执行的时间滞后
  • 预加载
    空间置换时间 在加载的时候 会加载当前所需的图片资源和可能后面所需的图片资源 增加了空间内存的大小 但减少了后续使用所需的图片的时间

相关文章

  • 基础算法 - 两数之和 (暴力循环和一遍哈希表)

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

  • C语言第六次作业:动态申请内存

    动态申请内存 1. 两数之和 数组二重循环\哈希表 167. 两数之和 II - 输入有序数组数组二重循环\首尾指...

  • 2019-07-21刷题-3

    题目序号:1,167,125 两数之和思路:本题采用简单的暴力算法,其复杂度是O(n^2)。可采用哈希表,达到O(...

  • 第一周算法总结

    1. 两数之和 方法一:暴力法(两层循环)时间复杂度:O(n^2) ,空间复杂度O(1) 方法二:两遍哈希表(第一...

  • 算法「两数之和-哈希」

    利用HashMap 减少查询时间 在暴力法中,内层循环查找差值很浪费时间,那么如何减少查询时间呢?利用HashMa...

  • LeetCode-1 两数之和

    题目:1. 两数之和 难度:简单 分类:数组,哈希表 解决方案:暴力求解、HashMap 从今天开始开启《Leet...

  • 算法题分类规划

    哈希表 or 切片操作 or stack 1. 两数之和 (attention break) https://le...

  • 哈希表1 两数之和

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

  • LeetCode 1 两数之和 Two Sum Python

    有关哈希表的LeetCode做题笔记,Python实现 1. 两数之和 Two Sum LeetCodeCN 第1...

  • 哈希表 Leetcode 167 两数之和

    题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 ind...

网友评论

    本文标题:基础算法 - 两数之和 (暴力循环和一遍哈希表)

    本文链接:https://www.haomeiwen.com/subject/npobkctx.html