ARTS第一周

ALGORITHM

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
    //性能差
    function twoSum($nums, $target) {
        $len = count($nums);
        for ($i = 0; $i < $len - 1; $i ++) {
            for ($j = $i + 1; $j < $len; $j ++) {
                if ($nums[$i] + $nums[$j] == $target) {
                    return [$i, $j];
                }
            }
        }
        return [];
    }
    //重复键值出错,比如 [3, 3]
    function twoSum($nums, $target) {
        $arr = [];
        for ($i = 0; $i < count($nums); $i ++) {
            $arr[$nums[$i]] = $i;
        }
        foreach ($arr as $node) {
            if (isset($arr[$target - $node])) {
                return [$arr[$node], $arr[$target - $node]];
            }
        }
        
        return [];
    }

REVIEWS

去年公司用SOLR代替了Autonomy作为主搜索引擎,最近的工作一大半都是花在Solr的各种文档上,大致看了一下BOOST方法,用于后续结果的排序调优

https://lucene.apache.org/solr/guide/7_5/the-dismax-query-parser.html#bf-boost-functions-parameter

TIPS

工作了那么多年还是发现很多人没有文档习惯,推荐一下apidoc,这东西只要求你写规范的注释就可以生成标准文档。

http://apidocjs.com/ https://www.jianshu.com/p/34eac66b47e3

SHARES

同事有个需求,需要从短语中识别出字典内的分词,字典比较大大约4000个词,由于是线上应用,对于性能要求较高。我看了一下,类似以前的敏感词屏蔽方案,推荐了DFA和实现 https://www.zkii.net/tech/php/1115.htmlDFA算法(全名:Deterministic Finite Automaton)即有穷自动机,他表示效果很理想,有类似需求的也可以使用看看。