最近两天对目前博客使用的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有点不搭😅?等下一期再做吧😎。