oppo笔试 oppo笔试题 0728

笔试时间:2024年07月28日 提前批

历史笔试传送门:2023秋招笔试合集

第一题

题目:分糖果

小o有三盒糖果,糖果数分别为a,b和c。现在小0又有了x颗糖果,他要把这x颗糖果恰好分到新的k个盒子里面去,保证每一个盒子里至少有一颗糖果。这样他就拥有了k+3盒糖果,然后他会在这k+3盒糖果中挑选出最多的那一盒糖果。显然,x颗糖果分到k个盒子里往往不止一种方案。小0想知道,无论他如何分配这x颗糖果,糖果最多的那一个盒子的编号是否确定目唯一。

输入描述

第一行输入三个整数 a,b和c(1<=a,b,c<=10^9)表示初始三盒糖果的个数。

第二行输入两个整数x和k(1<=k<=x<=10^9)代表小O新获得的糖果个数,和需要新放人糖果的盒子数。

输出描述

如果糖果最多的那一个盒子的编号确定且唯一,输出“YES”,否则,输出“NO”。

样例输入

423

22

样例输出

YES

参考题解

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    vector<int> arr;
    string input_line;
    getline(std::cin, input_line);
    istringstream iss(input_line);
    int num;
    while (iss >> num) {
        arr.push_back(num);
    }

    int x, k;
    cin >> x >> k;

    int max_value = *std::max_element(arr.begin(), arr.end());
    
    // 判断条件并输出结果
    if (max_value > 1 + x - k) {
        cout << "Yes" << std::endl;
    } else {
        cout << "No" << std::endl;
    }
    
    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.Scanner;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 读取数组输入
        String[] arrStr = scanner.nextLine().split(" ");
        int[] arr = new int[arrStr.length];
        for (int i = 0; i < arrStr.length; i++) {
            arr[i] = Integer.parseInt(arrStr[i]);
        }
        
        // 读取 x 和 k
        int x = scanner.nextInt();
        int k = scanner.nextInt();
        
        // 找到数组中的最大值
        int maxValue = Arrays.stream(arr).max().getAsInt();
        
        // 判断条件并输出结果
        if (maxValue > 1 + x - k) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
        
        scanner.close();
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

arr = [int(c) for c in input().split()]
x,k = map(int, input().split())
if max(arr) > 1 + x-k:
    print("Yes")
else:
    print("No")

第二题

题目

小o有两个长度为n的数组,现在她想从这两个数组中分别选出一个非空子序列,使得从第一个数组中选出的子序列的最大值不大于从第二个数组中选出的子序列的最小值。小o想知道两个子序列的长度之和最大是多少。如果数组a可以通过删除数组b中的若干(可能为零或全部)元素得到,则数组 a是数组b的子序列。

输入描述

第一行输入一个整数n(l<=n<=10^5)代表数组的长度。

第二行输入几个整数a1,a2,...,an(1<=ai<=10^9)代表第一个数组。

第三行输入几个整数b1,b2,…,bn(1<=bi<=10^9)代表第二个数组。

输出描述

在一行上输出一个整数,表示两个子序列的长度之和最大是多少。如果无法选出满足条件的子序列,则输出-1。

样例输入

4

1 2 3 4

3 4 5 6

样例输出

7

参考题解

二分+枚举。首先将两个数组排序。要找到所有满足条件最长的那个,我们可以通过枚举第一个数组中的最大值来进行。假设枚举当前第一个数组的最大值为a,那么二分来找到第二个数组中,大于等于a的最小值,叠加这两个子序列的长度,更新最大值即可。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    int n;
    std::cin >> n;

    std::vector<int> A(n), B(n);
    for (int i = 0; i < n; ++i) std::cin >> A[i];
    for (int i = 0; i < n; ++i) std::cin >> B[i];

    std::sort(A.begin(), A.end());
    std::sort(B.begin(), B.end());

    int ans = 0;

    for (int i = 0; i < n; ++i) {
        int a = A[i];
        int l = 0, r = n;
        while (l < r) {
            int mid = (l + r) / 2;
            if (B[mid] >= a) r = mid;
            else l = mid + 1;
        }
        ans = std::max(ans, i + 1 + n - r);
    }

    std::cout << a

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论
佬,oppo技术笔试只有算法题吗
点赞 回复 分享
发布于 08-10 08:53 浙江

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
昨天 21:28
已编辑
南京市金陵中学 C++
最后以华为13级这个并不那么满意的offer结束支离破碎的秋招。bg:本硕双9电子信息类,非计算机,论文只有一篇ei会议。秋招目标:私企(问就是亲眼所见国企关停)转码前:研一时虽然大部分师兄师姐在转码,但是各种渠道渲染我们的专业很强,当时的想法是不转码肯定能找到满意的私企,然后拿本科毕设投了个ei会议,并开始自己找课题研究(导师放养)。研一下找到方向,研二上在仿真和写论文的时候开始意识到形势不好,越来越多的学长学姐申请华为的对口职位流程挂或只有个别勉强拿到offer,在萌生转码的念头时论文写到一半,于是决定论文写完再转码,觉得论文对找工作有用(现在来看对找开发的工作作用聊胜于无)。论文写完已经是12月中旬,一次次找导师改收到的是一次次拖延,直到3月份一个字没改让我投顶刊我才意识到这一年半的努力在秋招时不可能再转化为成果了。一个408只学过计算机网络,语言只学过c++且期末也只是刚及格的牛马从12月底才开始了转码。转码:算法卷院校卷顶刊没戏,只可能转开发,由于很多学长学姐都转码拿到华为的offer,难度不高,所以我最开始的目标是通过c++技术栈拿下华为并尝试互联网后端。零基础一切都要现学,所以就先从数据结构、操作系统、算法题这些开发类必备的知识学起,寒假开始刷力扣,当时根本不算是刷题,全是在看题解,印象很深刻的是第一题两数之和折磨了我一下午。三月刷力扣+背408八股,到三月底听计算机的同学说暑期实习后端卷麻了,相反前端今年相对简单,经过几天的考虑,最终决定两线作战:前端和c++,此时认为华为能稳稳作为保底。四月9106匆忙学了html+css+js,五月学了vue就去投实习了,b站腾讯阿里国际美团滴滴给了面试,但只有美团到了终面,结果还因为过于紧张以及没经验说错了话,与offer失之交臂。五月剩下的时间为华为准备了一个c++开源项目,六七月学react并准备了一个前端项目。本来的梦想是秋招签阿里等华为,然而噩梦就要开始了。秋招:先说结论吧,眼高手低,互联网一个都没拿到,老本行拿到某雷达所,前端拿到体面厂和性价比厂,c++拿到某学历厂、华子外包、迪子和两个通信大厂,两个前端base一个杭州一个南京,总包都不到25,c++的几个里华子外包和迪子base深圳,另外三个base上海且薪资降序。八月九月上旬集中投递前端岗位,每天都在笔试测评,但给面试的只有美团京东淘天,美团终面面试官百般刁难,甚至拷打前端发展历史这种问题,寄了之后美团再没捞我,必然是脏了面评,京东一面hr面,拷打我本科成绩和无竞赛奖项,直接寄,淘天二面挂。然后九月中旬发现互联网希望渺茫,慢一步投递了c++相关岗位,华为线下面试一天速通池子后拒了研究所的oc,抱着华为稳了的想法准备结束秋招,结果几天后问面试情况被告知面评非3A。这最后一根稻草压垮了996半年的我,整日的emo和严重的焦虑导致我不停的胡思乱想,加上那几天我的室友和我同一时间投递的三家都有进展甚至oc而我没有任何进展,我在发呆焦虑迷茫中度过了那一周。而一周之后算是有些好消息,开始有offer了,至少不至于毕业即失业。为了给华为留一线生机拒了最早来的一家(听说华为不等这家毁约),体面厂在接受意向后,华为在经过一系列沟通后告知可以给offer,因此未签三方,性价比厂oc后紧接着收到华为通知报批通过,接着就是现在华为第一批开奖了。总结:看着现在同学没有杂七杂八想法单一技术栈allin华为oc14甚至15级很不甘心,回想起来我可能在每个节点都做错了选择:在研一时不做充分调研就对不转码找工作过于自信,不该在只有几个月时间准备的情况下开辟第二战场转前端,不该在找不到暑期实习后还继续梭哈前端,不该在互联网全线溃败时面试华为导致面试官觉得我不够自信……太多的错误导致了这个结局。看好华为的平台以及去上海的意愿让我最后做出了接受13级的选择。回顾这接近19年的学习阶段,我总是在尝试向上卷:中考和全市人竞争重点高中,高考和全省人竞争985,考研更是千军万马过独木桥。我卷进了重点高中,但是我的努力收获的是高三一次比一次差的成绩,高考我考了一个高三从未考到过的成绩,曾经我认为这才是我的真实水平,但是现在我觉得我错了,本科时我卷不过同学,花费几倍于别人的努力却只能勉强达到差不多的水平;考研初试我靠着接近一年的995才收获高分,而准备同样时间的复试我就远远落后于别人;花费同样的时间在科研上也不能获得与别人差不多的成果。曾经我也自命不凡,但我现在意识到自己就是个平凡到不能再平凡的人,我的努力在命运面前仿佛沧海一粟。借用自己很喜欢的一首歌的歌词来结尾吧:“难以释怀的&nbsp;让时间冲淡&nbsp;至少我还在期盼。”希望工作顺利,希望生活如意。
牛客220859485号:唉,加油吧老哥,硕士拿13已经很吃亏了。感觉老哥是选择做错了,卷一卷java去互联网后端没问题的,华子也不是只收c++。all in C++是把路走窄了。
点赞 评论 收藏
分享
评论
5
17
分享
牛客网
牛客企业服务