ARTS打卡25-搭建网页全文搜索

Algorithm做算法题,Review点评英文文章,Tip总结技术技巧,Share做技术分享。每周打卡一次,这就是ARTS打卡。

1. 做算法题

LeetCode 905. 按奇偶排序数组

题目描述:

给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。

你可以返回满足此条件的任何数组作为答案。

示例:

输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。

解题思路:

有两个思路,一是从数组的首尾向中间遍历,对比前后两个数的奇偶,分四种情况处理,偶-奇(不动),偶-偶(后面的偶数插入数组前部),奇-偶(交换),奇-奇(前面的奇数插入最后)。不占用额外空间,空间复杂度为O(1)。遍历数组时间复杂度O(n),存在数组数据搬移,整体时间复杂度达到O(n^2)。第二种思路是,创建一个和原数组A一样大小的数组B,遍历一遍A,A中元素为偶数就复制到B的前部,为奇数就放到B的后部。空间复杂度为O(n),时间复杂度为O(n)。第一种思路情况太多,还要考虑边界,编码复杂。第二种思路比较简单,采用第二种方式,代码如下。

解题代码:

class Solution:
    def sortArrayByParity(self, A: List[int]) -> List[int]:
        B = [-1]*len(A)
        pre, back = 0, len(A)-1
        for i in range(len(A)):
            if A[i] % 2 == 0:
                B[pre] = A[i]
                pre += 1
            else:
                B[back] = A[i]
                back -= 1
        return B

2. 点评英文文章

文章《Learning How to Learn is More Important than Learning to Code》介绍了学习如何学习的方法,有三个,分别是给正反馈,发散,睡眠。大脑需要鼓励,可以用番茄钟计时,集中精力一段时间后,奖励自己一下。大脑是发散的,别总专在一段代码里,散散步也许更有用。大脑需要休息,大脑是最消耗能量的器官,睡一个好觉才有精力干活。

3. 技术技巧

收到一封github的邮件,说我的代码仓库中某个依赖包出现了漏洞。当时将信将疑,会不会是钓鱼邮件?登入github看看,有一条消息提醒,点开看看和邮件内容一致,看来不是诈骗邮件了。接着继续看如何修复漏洞,github已经自动pull了一个依赖修复文件,我只需要点击Merge就完了。修复代码漏洞这么简单?原来github具有自动发现漏洞、提醒用户并把依赖升级PR做好,具体github自动修补过程参考这里

4. 技术分享

docsearch是一个比较方便给网站添加搜索引擎的工具。免费版本搜索引擎有限制,只能搜技术手册类的网页。我尝试把自己的博客添加docsearch搜索引擎。在docsearch官网提交了我的网站和邮箱地址。等了半个月,终于等到了邮件回复,原来是人工后台审核网站是否符合技术手册类要求。回复是判断我的博客不属于技术手册类,不过代码是开源的,可以自己部署,部署docsearch参考

4.1 环境准备

需要安装jq和Docker。jq是一个简单的json解析工具。在centos下安装jq方法参考
Docker是容器管理工具,使用Docker环境运行docsearch,安装Docker方法参考。注意在Linux内核版本3.8以上才能用Docker,也就是说Centos6以下的版本都不行。只能安装Centos7以上版本。

4.2 部署安装

参考官网过程部署docsearch,参考,并配置vuepress。拉取Docker镜像时可能在国内很慢,可以使用阿里云的镜像加速功能,Docker镜像加速参考

4.3 调试运行

执行docker run -it --env-file=.env -e "CONFIG=$(cat /path/to/your/config.json | jq -r tostring)" algolia/docsearch-scraper之后开始爬取网页,并将索引结果反馈给docsearch,在官网的dashboard可以看到爬取、请求等情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值