每天一篇面試題(三)
阿新 • • 發佈:2019-02-18
題目一
用盡可能多的方法找出陣列中重複出現過的元素
例如:[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>