左耳听风-ARTS-第 1 周

2019-08-25  本文已影响0人  这里有颗小螺帽

ARTS 是耗子叔发起的一个活动

A(Alogarithm):每周至少做一个 leetcode 算法题
R(Review):阅读并点评至少一篇英文技术文章
T(Tip):学习至少一个技术技巧
S(Share):分享一篇有观点和思考的技术文章

Alogarithm

leetcode 第1题:

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

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

题目:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解答:
编辑器:VS code
编程语言:C++
先用一般暴力求解的方法来做:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int sum;
        vector<int>targetArr;
        //初始化 targetArr 为[-1,-1]
        targetArr.push_back(-1);
        targetArr.push_back(-1);
        for(int i = 0; i < nums.size(); i++)
            for(int j = (i+1); j < nums.size(); j++)
            {
                sum = nums[i] + nums[j];
                if (sum == target)
                {
                   targetArr.clear();//清除 targetArr 内元素
                   targetArr.push_back(i);//在  targetArr 尾部添加值 I
                   targetArr.push_back(j);
                   return  targetArr;
                }
            }
    return targetArr;
    }
};

这种方法的计算时间稍慢,因为时间复杂度为O(n^2),为了缩短一下计算时间,下面用 哈希表 的方法改写一下。

class Solution {
public:
   vector<int> twoSum(vector<int>& nums, int target) {
       vector<int>targetArr;
       targetArr.push_back(-1);
       targetArr.push_back(-1);
       map<int,int>hashTable;
   
      int findValue;
      for(int i = 0; i < nums.size(); i++)
       {
          findValue = target - nums[i];
          if(hashTable.find(findValue) != hashTable.end())//hashTable.find(findValue) 返回的是被查找元素的位置
          {
              targetArr.clear();//清除 targetArr 内元素
              targetArr.push_back(hashTable[findValue]);//在  targetArr 尾部添加值 I
              targetArr.push_back(i);
              return targetArr;
           }   
          hashTable[nums[i]] = i;
       }
       
   return targetArr;
   }
};

其实还有其他解答方法,这里就不一一列举了。

Review

《The Illustrated Transformer》
这篇文章用图形化的方式详细介绍了 Transformer 这个模型,Transformer 最初是在 attention is all you need 这篇 Google 论文中提出来的, The Illustrated Transformer 让理解 Transformer 模型变得更简单,下面贴一张文中的图片。

multi-headed self-attention

Tips

linux 中的 tail 命令
tail 主要是用来查看文章中的内容
命令格式:tail [参数] [文件名]
参数:

实操:


tail -n.jpg
tail -c.jpg

Share

本周没有分享技术文章

上一篇下一篇

猜你喜欢

热点阅读