最近两天对目前博客使用的Lous主题进行了定制,做了一点微小的工作:
一个是修复了代码框导致正文与顶栏不对齐的问题,解决方法是给pre
标签增加max-width: 600px
的限制;
第二个是定制了代码框的外观,增加了阴影(box-shadow
),高亮主题改为atom-one-dark-reasonable;
最后也是最重要的:修改了字体。目前在Windows 10下,博客正文中文为微软雅黑,英文为Segoe UI;等线中文为微软雅黑,英文为Consolas。文章Web 字体 font-family 浅谈详尽地介绍了font-family的相关知识和最佳实践,本次修改参考了博主给出的推荐配置,在此表示感谢。
最后,让我们来一段代码,1-Two-Sum.cpp
/*
Solution 1: 拷贝数组,新数组排序,双指针找到两个数,然后在原数组中查找这两个数的下标。
时间复杂度:排序O(nlogn),查找O(2n),合并O(nlogn)。空间复杂度:O(n)。
Solution 2: 使用字典存储经过的数与下标,计算target-nums[idx]是否在字典中。
时间复杂度:O(n),空间复杂度O(n)。
*/
#include<iostream>
#include<vector>
#include<cassert>
#include<algorithm>
#include<unordered_map>
using namespace std;
class Solution {
public:
vector<int> twoSum(const vector<int>& nums, int target){
// assume that each input would have exactly one solution
unordered_map<int, int> num_idx_dict; // value -> index
vector<int> res;
for (int idx=0; idx<nums.size(); ++idx){
auto find_iter = num_idx_dict.find(target-nums[idx]);
if (find_iter == num_idx_dict.end()){
// NOTE: emplace的接口类似pair
// num_idx_dict.emplace(nums[idx], idx);
// NOTE: 也可以直接用下标增加元素
num_idx_dict[nums[idx]] = idx;
}else{
// NOTE: 如果访问map的迭代器,接口类似pair
// res.push_back((*find_iter).second);
// NOTE: 如果是通过下标访问,返回值
res.push_back(num_idx_dict[target-nums[idx]]);
res.push_back(idx);
break;
}
}
return res;
}
};
int main(){
Solution s;
vector<int> res = s.twoSum(vector<int>{2,7,11,15}, 9);
vector<int> ans{0,1};
assert(res == ans);
}
貌似这个高亮主题与Lous有点不搭😅?等下一期再做吧😎。