Funplus笔试 趣加笔试 Funplus秋招 0913

笔试时间:2025年9月13日

往年笔试合集:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题:扑克牌中的顺子

趣小加非常喜爱玩扑克,现在需要从若干副扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13;而大、小王为0,可以看成任意牌。另外,"A,10,J,Q,K"也是顺子。请你帮助趣小加实现上述功能。

输入描述

数组长度为5,数组的数据值为0~13。

输出描述

返回布尔值,表示是否为顺子。

样例输入

[1, 2, 3, 4, 5]

样例输出

true

参考题解

解题思路:

  1. 去重与记录极值:使用HashSet判断是否存在重复的非大小王(非0)牌,如果存在重复则不是顺子。同时记录非0牌中的最大值和最小值。
  2. 主要逻辑判断:在没有重复牌的情况下,如果max-min的差值小于5,那么这5张牌(包括大小王)一定能构成顺子。
  3. 特殊情况处理:检查A(1),10,J,Q,K这种特殊顺子,如果所有牌都是1或10-13,则也判定为顺子。
  4. 边界情况:如果牌组全是大小王,也视为顺子。

C++:

#include <vector>
#include <unordered_set>
#include <algorithm>
using namespace std;

class Solution {
public:
    bool isStraight(vector<int>& nums) {
        if (nums.size() != 5) {
            return false;
        }
        
        unordered_set<int> uniqueNums;
        int minVal = 14;
        int maxVal = 0;
        
        for (int num : nums) {
            if (num == 0) {
                continue;
            }
            if (uniqueNums.count(num)) {
                return false;
            }
            uniqueNums.insert(num);
            minVal = min(minVal, num);
            maxVal = max(maxVal, num);
        }
        
        if (uniqueNums.empty()) {
            return true;
        }
        
        if (maxVal - minVal < 5) {
            return true;
        }
        
        bool isSpecialCase = true;
        for (int num : uniqueNums) {
            if (num > 1 && num < 10) {
                isSpecialCase = false;
                break;
            }
        }
        
        return isSpecialCase;
    }
};

Java:

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

public class Solution {
    public boolean isStraight(ArrayList<Integer> nums) {
        if (nums == null || nums.size() != 5) {
            return false;
        }
        
        Set<Integer> uniqueNums = new HashSet<>();
        int min = 14;
        int max = 0;
        
        for (int num : nums) {
            if (num == 0) {
                continue;
            }
            if (uniqueNums.contains(num)) {
                return false;
            }
            uniqueNums.add(num);
            min = Math.min(min, num);
            max = Math.max(max, num);
        }
        
        if (uniqueNums.isEmpty()) {
            return true;
        }
        
        if (max - min < 5) {
            return true;
        }
 

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

2025 春招笔试合集 文章被收录于专栏

2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南

全部评论

相关推荐

bg双非本科,方向是嵌入式。这次秋招一共拿到了&nbsp;8&nbsp;个&nbsp;offer,最高年包&nbsp;40w,中间也有一段在海康的实习经历,还有几次国家级竞赛。写这篇不是想证明什么,只是想把自己走过的这条路,尽量讲清楚一点,给同样背景的人一个参考。一、我一开始也很迷茫刚决定走嵌入式的时候,其实并没有一个特别清晰的规划。网上的信息很零散,有人说一定要懂底层,有人说项目更重要,也有人建议直接转方向。很多时候都是在怀疑:1.自己这种背景到底有没有机会2.现在学的东西到底有没有用3.是不是已经开始晚了这些问题,我当时一个都没答案。二、现在回头看,我主要做对了这几件事第一,方向尽早确定,但不把自己锁死。我比较早就确定了嵌入式这个大方向,但具体做哪一块,是在项目、竞赛和实习中慢慢调整的,而不是一开始就给自己下结论。第二,用项目和竞赛去“证明能力”,而不是堆技术名词。我不会刻意追求学得多全面,而是确保自己参与的每个项目,都能讲清楚:我负责了什么、遇到了什么问题、最后是怎么解决的。第三,尽早接触真实的工程环境。在海康实习的那段时间,对我触动挺大的。我开始意识到,企业更看重的是代码结构、逻辑清晰度,以及你能不能把事情说清楚,而不只是会不会某个知识点。第四,把秋招当成一个需要长期迭代的过程。简历不是一次写完的,面试表现也不是一次就到位的。我会在每次面试后复盘哪些问题没答好,再针对性补。三、我踩过的一些坑现在看也挺典型的:1.一开始在底层细节上纠结太久,投入产出比不高2.做过项目,但前期不会总结,导致面试表达吃亏3.早期有点害怕面试,准备不充分就去投这些弯路走过之后,才慢慢找到节奏。四、给和我背景相似的人一点建议如果你也是双非,准备走嵌入式,我觉得有几件事挺重要的:1.不用等“准备得差不多了”再投2.项目一定要能讲清楚,而不是做完就算3.不要只盯着技术,多关注表达和逻辑很多时候,差的不是能力,而是呈现方式。五、写在最后这篇总结不是标准答案,只是我个人的一次复盘。后面我会陆续把自己在嵌入式学习、竞赛、实习和秋招中的一些真实经验拆开来讲,希望能对后来的人有点帮助。如果你正好也在这条路上,希望你能少走一点弯路。
x_y_z1:蹲个后续
点赞 评论 收藏
分享
2025-12-25 16:26
已编辑
河北科技学院 Java
勇敢的牛油不服输:2800-300那不等于2500一个月吗兄弟们
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务