腾讯面试笔试题

1、两个有序int数组,合并成一个?
答:用两个下标移动,判断大小,写入到一个新的数组里面
public static int[] add(int[] l1, int[] l2) {
        if (l1 == null || l1.length == 0) return l2;
        if (l2 == null || l2.length == 0) return l1;

        int[] l3 = new int[l1.length + l2.length];
        int l1Index = 0;
        int l2Index = 0;
        for (int i = 0; i < l1.length + l2.length; i++) {
            if (l1Index == l1.length ) {
                for (int j = l2Index; j < l2.length; j++) {
                    l3[i + j - l2Index] = l2[j];
                }
                break;
            }
            if (l2Index == l2.length ) {
                for (int j = l1Index; j < l1.length; j++) {
                    l3[i + j - l1Index] = l1[j];
                }
                break;
            }

            if(l1[l1Index] < l2[l2Index]) {
                l3[i] = l1[l1Index];
                l1Index ++;
            } else {
                l3[i] = l2[l2Index];
                l2Index ++;
            }
        }
        return l3;
    }


2、求一个数的n次方?
答:我写的是递归,显然不是面试官想要的答案。说时间复杂度能不能降一下,不会啦!
public static long pow(long x, int n) {
        if (n == 0) {
            return 1L;
        }
        return x * pow(x, n - 1);
    }
网上百度啦一个答案,没怎么看懂,放出来大家瞅一瞅
static long power(long a, int n) {
        long r = 1;
        int t = 0;
        while (n >= 1) {
            if ((n & 1) == 1) {
                r *= a;
            }
            a *= a;
            n = n >> 1;
        }
        return r;
    }


#腾讯笔试##大数据求职#
全部评论
腾讯不是没开秋招吗
点赞 回复 分享
发布于 2022-09-12 20:19 安徽
请问面的是哪个部门呀~
点赞 回复 分享
发布于 2022-09-23 15:25 北京
第二题是快速求和一样的思路,不是一个一个进行乘法,而是进行*2,*4,*8这样,小于就继续乘,大于就在上一个数和这个数之间寻找答案,可以降低时间复杂度
点赞 回复 分享
发布于 2022-09-26 11:13 湖北
你这个递归求pow给我看麻了,你这写的跟for循环有啥区别
点赞 回复 分享
发布于 2022-10-04 00:35 福建
第二个快速幂了解一下
点赞 回复 分享
发布于 2022-10-08 08:55 上海

相关推荐

评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客企业服务