腾讯笔试 后台开发4ac

  1. 链表分组

    1. 直接根据值分组
    2. 核心模式,没有代码
  2. n个魔法球,破坏魔法球可以获得能量x,并且给其他魔法球增加能量x

    1. 贪心,从最大取

    2. 坑点:取余

      static long func1(long[] f, int n) {
       Arrays.sort(f);
       long ans = 0, cur = 0;
       int mod = 1000000007;
       for (int i = n - 1; i >= 0; i--) {
           f[i] += cur;
           f[i] %= mod;
           ans += f[i];
           ans %= mod;
           cur += f[i];
           cur %= mod;
       }
      
       return ans % 1000000007;
      }
  3. 小船无数,载重w,n个人,每条船可以有2种方式

    1. 2个人,载重为偶数

    2. 1个人

    3. 思路:

      1. 奇偶分组,贪心去去匹配

        static int func3(int[] f, int w) {
        List<Integer> a = new ArrayList<>(), b = new ArrayList<>();
        for (int i : f) {
         if (i % 2 == 0) {
             a.add(i);
         } else {
             b.add(i);
         }
        }
        int[] aa = a.stream().mapToInt(Integer::intValue).toArray();
        int[] bb = b.stream().mapToInt(Integer::intValue).toArray();
        
        Arrays.sort(aa);
        Arrays.sort(bb);
        return funcc3(aa, w) + funcc3(bb, w);
        }
        static int funcc3(int[] f, int w) {
        int l = 0, r = f.length - 1;
        int ans = 0;
        while (l < r) {
         if (f[l] + f[r] > w) {
             r--;
             continue;
         }
         ans++;
         l++;
         r--;
        }
        return f.length - ans;
        }
  4. 长度为n的字符串s,找到长度为k的字典序最大子序列

    1. 遍历s,查看当前字符c是不是比之前的字符串c1要大,大则弹出

       static String func4(String s, int k) {
       StringBuilder sb = new StringBuilder();
       int n = s.length();
      
       for (int i = 0; i < s.length(); i++) {
           char c = s.charAt(i);
           while (sb.length() > 0 && sb.charAt(sb.length() - 1) < c && sb.length() + s.length() - i > k) {
               sb.deleteCharAt(sb.length() - 1);
           }
           if (sb.length() < k) {
               sb.append(c);
           }
       }
      
       return sb.toString();
      }
  5. 待大佬补充

#腾讯笔试##笔经##腾讯#
全部评论
为什么你的不用写输入输出
点赞 回复 分享
发布于 2021-08-22 22:21
第一题我的算法时间复杂度都是o(n)了,但是提交还是只有90,说是超时了,第一题是需要处理环状的情况吗?
点赞 回复 分享
发布于 2021-08-22 22:52
老哥啥时候做的笔试?
点赞 回复 分享
发布于 2021-08-23 12:08
感谢楼主分享
点赞 回复 分享
发布于 2021-08-23 12:09
魔法球那题为什么这么做能出正确答案啊,看着代码想了5个小时打了10页草稿都没想明白,我智商只有25么?
点赞 回复 分享
发布于 2021-08-23 22:09
https://www.nowcoder.com/discuss/678915投腾讯可以找我哈,有问必答!
点赞 回复 分享
发布于 2021-08-24 00:51
你好,我还没参加过笔试,我想问下,代码是所有语言自选吗,还有是像牛客一样只写函数,还是要完成main函数
点赞 回复 分享
发布于 2021-08-24 09:17
nums.sort() nums.reverse() for i in range(1, len(nums)):     nums.pop()     total += i*sum(nums) 魔法球能量这个就可以了
点赞 回复 分享
发布于 2021-08-24 15:57

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
15 47 评论
分享
牛客网
牛客企业服务