1. 程式人生 > >每天一篇面試題(三)

每天一篇面試題(三)

題目一

用盡可能多的方法找出陣列中重複出現過的元素

例如:[1,2,4,4,3,3,1,5,3] 輸出:[1,3,4]
作者補充:若給出多種方式,請分別給出他們的複雜度

<script> 
    var input = [1,2,4,4,3,3,1,5,3];
    var counter = new Array();
    var output = new Array();
    for(var i = 0; i < input.length; i++) {
        if(counter[input[i]]==undefined
) counter[input[i]] = 0; counter[input[i]]++; } for(var i = 0; i < counter.length; i++) { if(counter[i] >= 2) { output.push(i); } } console.log("counter:",counter.join(',')); console.log("output:", output.join(','));
</script> </body
>

題目二

給定一些文件(docs)、詞(words),找出詞在文件中全部存在的所有文件

<script type="text/javascript" charset="utf-8">
    var docs = [
            {
                id: 1,
                words: ['hello',"world"]
            },
            {
                id: 2,
                words: ['hello',"kids"]
            },
            {
                id: 3
, words: ['zzzz',"hello"] }, { id: 4, words: ['world',"kids"] } ]; findDocList(docs,['hello']) //文件1,文件2,文件3 findDocList(docs,['hello','world']) //文件1
</script>
<script>
    var docs = [{id:1, words:['hello', 'world']}, {id:2, words:['hello']}, {id:3, words:['hello', 'vertical']}];
    function findDocList(docs, arrKey) {
        var target = new Array();
        var targetStr = arrKey.join('?');
        for(var i = 0; i < docs.length; i++) {
            var wordsStr = docs[i].words.join('?');
            if(wordsStr.indexOf(targetStr) != -1) {
                target.push(docs[i]);
            }
        }
        for(var i = 0; i < target.length; i++) {
            var str = "文件";
            console.log(str+target[i].id);
        }
    }
    findDocList(docs, ['hello', 'world']);
</script>