美文网首页
左耳听风-ARTS-第 1 周

左耳听风-ARTS-第 1 周

作者: 这里有颗小螺帽 | 来源:发表于2019-08-25 23:28 被阅读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 [参数] [文件名]
    参数:

    • -f 把文件里的最尾部的内容显示在屏幕上,并且不断刷新
    • -n <行数> 显示文件的尾部 n 行内容
    • -c <数目> 显示文件最后的字节数

    实操:


    tail -n.jpg
    tail -c.jpg

    Share

    本周没有分享技术文章

    相关文章

      网友评论

          本文标题:左耳听风-ARTS-第 1 周

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