简要回顾
昨天的leetcode 350
,市面上的解法各有千秋,但是时空复杂度以及内存消耗极高。
下面简单再介绍下,我琢磨出来的思路:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
const intersect = (nums1, nums2) => { let mark = {}; nums1.forEach(item => { if (mark[item]) { mark[item] +=1; } else { mark[item] = 1 } })
return nums2.filter(item => { if (mark[item]) { mark[item]-- return true } }); }
console.log(intersect([1,2,2,1], [2, 2]))
|
上面的代码应该比较直观!
新的题目
1 2 3 4 5 6 7 8 9 10 11 12 13
| 编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
输入:strs = ["flower","flow","flight"] 输出:"fl"
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| var longestCommonPrefix = function(strs) { if(!strs.length) { return ''; } if (strs.length === 1) { return strs[0]; } strs.sort((a, b) => a.length - b.length); let minStr = strs.shift(); for (let i = 0; i< strs.length; i++) { let point = 0; if (!minStr) { break; } for (; point <= minStr.length; point++) { if(minStr.charAt(point) !== strs[i].charAt(point)) { break;} }
minStr = minStr.substring(0,point); }
return minStr; };
|
谈不上最优解,但是处理边界和大体量数据处理上应该是比较具有优势的。