10.02 lazada前端笔经

个人感受

真的就是体验感拉满。只有三道算法题,然后每道题都不难,都能做出来一部分,但是如果想ak的话还是需要很高的水平。而且题目都是基于js出的,真的感受到了是为前端出的卷子,不像其他公司:选择填空出后端题,或者干脆就后端前端一起做一样的算法题... 这次笔试里两道题目限制了语言是js,一题没限制,题目又说了要js。感觉不是同个人出的卷子。
做完之后感觉自己基础还是太差了,而且之前做题都是随遇而安,觉得自己做出来了就行,没想过在题目基础上对时间跟空间复杂度更进一步要求。而且自己题目刷太少了...

第一题 大数相加 60% 力扣原题 415

题目上写了要求只用js,不过答题的时候可以选择其他的语言。提交到力扣后更新了代码 现在可以100%过了...
输入:A:"123",B:"123"
输出:"246"
输入跟输出都是字符串 应该是怕数字太大溢出了
思路:用数组来做,数组的容量比数字的安全位数大。先把AB切成数组,然后把长的那个部分(A跟B长度可能不一样,不知道测试用例里有没有这样的,不过我是先考虑到了这点)加到res中。然后再从0位开始遍历数组,每次让temp=两个数组当前的和。如果大于10,就从尾部遍历res(具体逻辑看代码),小于10直接加入res尾部。
res中存的尽量是number类型的值 如果是string类型 拿出来的时候还得转。

function bigIntAdd( n1 ,  n2 ) {
    // write code here
    n1 = n1.split("")
    n2 = n2.split("")
    let res = []
    while(n1.length!=n2.length){
        if(n1.length>n2.length){
            res.push(parseInt(n1.shift()))
        }else{
            res.push(parseInt(n2.shift()))
        }
    }
    // n1.length==n2.length
    // res[number]
    for(let i=0;i<n1.length;i++){
        let temp = parseInt(n1[i])+parseInt(n2[i])
        if(temp>=10){
            // temp==10
            if(res.length==0){
                res.push(1)
                res.push(temp%10)
            }else{
            for(let j=res.length-1;j>=0;j--){
                let now = res[j]+1
                if(now>=10){
                    if(j==0){
                        // 极端情况
                        res.unshift(1)
                        res[j+1] = (now)%10
                        res.push(temp%10)
                        break;
                    }else{
                        res[j] = (now)%10
                        continue;
                    }
                }else{
                    res[j] = now
                    res.push(temp%10)
                    break;
                }

            }
        }
        }else{
            res.push(temp)
        }
    }
    return res.join("")
}

第二题 除本身外的数组乘积 50% 剑指 Offer 66. 构建乘积数组

顾名思义 除本身外的数组其他数的乘积。看输入输出就知道意思。这个题有两个提升点,应该分别代表了不同的通过用例把。

  1. 要求时间复杂度O(n)
  2. 空间复杂度O(1)

限制语言js跟ts
输入:[1,2,3,4] 输出[24,12,8,6]
思路:只想到了用数组的map方法,复杂度太高。不如力扣方法

var constructArr = function (arr) {
    let res = [];

    let tmp = 1;
    for (let index = 0; index < arr.length; index++) {
        res[index] = tmp;
        tmp *= arr[index];
    }

    tmp = 1;
    for (let index = arr.length - 1; index >= 0; index--) {
        res[index] *= tmp;
        tmp *= arr[index];
    }

    return res;
};

第三题 中位数 100%

两个正序数组n和m 求出中位数。要求时间复杂度O(log(m+n))
输入:[1,3],[2] 输出:[2]
思路:合并之后排序后取中间。感觉正确解法应该不是这样,应该是用分治。不过我随便写了下居然全过了,就懒得改了T.T 懒狗一枚了属于是。

function findMedianSortedArrays( nums1 ,  nums2 ) {
    // write code here
    let temp = nums1.concat(nums2).sort()
    return temp.length%2===0?(temp(temp.length/2)+temp(temp.length/2 -1))/2:temp[Math.floor(temp.length/2)]
}
#Lazada校招##阿里lazada##笔试#
全部评论
lazada的秋招在哪里投啊
点赞
送花
回复
分享
发布于 2022-10-02 21:50 安徽

相关推荐

7 4 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1151740次浏览 17149人参与
# 通信和硬件还有转码的必要吗 #
11207次浏览 101人参与
# 不去互联网可以去金融科技 #
20414次浏览 256人参与
# 和牛牛一起刷题打卡 #
18994次浏览 1635人参与
# 实习与准备秋招该如何平衡 #
203400次浏览 3627人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4973次浏览 30人参与
# OPPO开奖 #
19205次浏览 267人参与
# 通信硬件薪资爆料 #
265935次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2227次浏览 34人参与
# 互联网公司评价 #
97697次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25037次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454880次浏览 5124人参与
# 国企和大厂硬件兄弟怎么选? #
53906次浏览 1012人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14646次浏览 349人参与
# 硬件人的简历怎么写 #
82287次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19398次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
28119次浏览 248人参与
# 学历对求职的影响 #
161245次浏览 1804人参与
# 你收到了团子的OC了吗 #
538752次浏览 6387人参与
# 你已经投递多少份简历了 #
344243次浏览 4963人参与
# 实习生应该准时下班吗 #
96981次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63525次浏览 622人参与
牛客网
牛客企业服务