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 模型变得更简单,下面贴一张文中的图片。
Tips
linux 中的 tail 命令
tail 主要是用来查看文章中的内容
命令格式:tail [参数] [文件名]
参数:
- -f 把文件里的最尾部的内容显示在屏幕上,并且不断刷新
- -n <行数> 显示文件的尾部 n 行内容
- -c <数目> 显示文件最后的字节数
实操:
tail -n.jpg
tail -c.jpg
Share
本周没有分享技术文章
网友评论