热门前端算法题(1)

  1. 数组两个数和,在目标数组里找出2个值相加等于target。然后输出这2个数
let nums = [8, 2, 6, 5, 4, 1, 3]
let target = 7
let cont = [2,5]
function twoNumAdd(arr, target) {
        if (Array.isArray(arr)) {
            // 使用map将遍历过的数字存起来,空间换时间`
            let map = {};
            for (let i = 0; i < arr.length; i++) {
                 console.log('target - arr[i]',target - arr[i])
                 // 从map中查找是否有key 等于 target-nums[i],如果有,则条件成立,返回结果
                 if (map[target - arr[i]] !== undefined) {
                     return [target - arr[i], arr[i]];
                 } else {
                     // 条件不成立,将该值存起来
                     map[arr[i]] = i;
                 }
                 console.log('map',map)
             }
        }
        return [];
    }
    console.log('twoNumAdd',twoNumAdd(nums,target))
  1. 版本号排序
function versionSort(arr) {
        return arr.sort((a, b) => {
            let i = 0;
            const arr1 = a.split(".");
            const arr2 = b.split(".");
            while (true) {
                // 取出相同位置的数字
                const s1 = arr1[i];
                const s2 = arr2[i];
                i++;
                // 若s1 或 s2 不存在,说明相同的位置已比较完成,接下来比较arr1 与 arr2的长度,长的版本号大
                if (s1 === undefined || s2 === undefined) {
                    return arr2.length - arr1.length;
                }
                if (s1 === s2) continue;
                // 比较相同位置的数字大小
                return s2 - s1;
            }
        });
    }
    let versonArr = ['2.1', '0.402.1', '10.2.1', '5.1.2', '2.1.4.5']
    console.log('VersionSort',versionSort(versonArr))
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容