科大讯飞 笔试题2021.8.15 Java版

【笔试题汇总】科大讯飞笔试题汇总 2024-04-21-科大讯飞春招笔试题 这里是团队的paoxiaomo,一个现役ACMer,之后将会持续更新算法笔记系列以及笔试题题解系列01.硬币最少组合问题。 阅读详情

1、将数的二进制表示中倒数第二个0改为1

如:10的二进制为1010,将倒数第二个0换为1后变为1110,结果为14

import java.util.ArrayList;
import java.util.List;

/**
 * @author Jefft
 * @date 2021/8/15 19:38
 */
public class Main {

    public int changeNumber (int num) {
        // write code here

        //10进制转为2进制
        List<Integer> list = new ArrayList<>();
        while (num != 0) {
            int i = num % 2;
            list.add(i);
            num /= 2;
        }

        //倒数第二个0转为1
        boolean isNum = false;
        //索引
        int index = -1;
        for (int i = 0;i < list.size();i++) {
            if (0 == list.get(i)) {
                if (!isNum) {
                    isNum = true;
                    continue;
                } else {
                    index = i;
                    break;
                }
            }
        }

        //2进制转10进制
        int res = 0;
        for (int i = 0;i < list.size();i++) {
            if (i == index || 1 == list.get(i)) {
                int n = 1;
                for (int j = 1;j <= i;j++) {
                    n *= 2;
                }
                res += n;
            }
        }
        return res;
    }


    public static void main(String[] args) {
        Main main = new Main();
        int i = main.changeNumber(15);
        System.out.println(i);  //90%
    }
}

2、求出字符串中包含26个字母的子串的最小长度,其中“?”可以代替其中一个字母

如:
“abcdefghijklmnopqrstuvw???abc”,结果为26
“abcdefghijklmnopqrstuvw?uvw??”,结果为29

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

/**
 * @author Jefft
 * @date 2021/8/15 19:56
 */
public class Main {
    public int findInterval (String str) {
        // write code here
        int res = -1;
        boolean hashChange= false;
        for (int i = 0;i < str.length();i++) {
            int len = getLen(str, i);
            if (len != -1) {
                if (!hashChange) {
                    res = len;
                    hashChange = true;
                } else {
                    res = Math.min(res, len);
                }
            }
        }
        return res;
    }

    public int getLen(String str, int index) {
        //Set去重,最后判断长度是否为26
        Set<Character> set = new HashSet<>();
        //应该到达的长度为26
        int len = 26;
        //从index开始遍历str
        for (int i = index;i < str.length();i++) {
            //遇到?则len = len - 1
            if ('?' == str.charAt(i)) {
                len -= 1;
            } else {
                set.add(str.charAt(i));
            }

            //如果到达则返回
            if (set.size() == len) {
                return i - index + 1;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        Main main = new Main();
        int acb = main.findInterval("abcdefghijklmnopqrstuvw???abc");
        System.out.println(acb);


    }
}

3、计算二叉树中距离为k的节点对的数量

在这里插入图片描述

对于上面的树,若令k = 3,则输出2。因为距离为3的节点对只有(4,3)和(5,3)

import java.util.ArrayList;
import java.util.List;

/**
 * @author Jefft
 * @date 2021/8/15 20:22
 */
public class Main {
    //节点集合
    static List<List<Integer>> lists = new ArrayList<>();
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @param k int整型
     * @return int整型
     */
    public int leafPairs (TreeNode root, int k) {
        // write code here
        List<Integer> ll = new ArrayList<>();
        ll.add(-1);
        lists.add(ll);
        if (root.left != null) {
            goNode(root.left, 1, ll);
        }
        if (root.right != null) {
            goNode(root.right, 2, ll);
        }


        int res = 0;
        for (int i = 0;i < lists.size() - 1;i++) {
            List<Integer> l1 = lists.get(i);
            int len1 = l1.size();

            for (int j = 1;j < lists.size();j++) {
                int curLen = 0;
                List<Integer> l2 = lists.get(j);
                int len2 = l2.size();
                int i1 = 0,i2 = 0;

                while (i1 < len1 && i2 < len2) {
                    if (l1.get(i1) != l2.get(i2)) {
                        curLen += 2;
                    }
                    i1++;
                    i2++;
                }
                //加上剩下的长度
                if (i1 >= len1) {
                    curLen += len2 - i2;
                }
                if (i2 >= len2) {
                    curLen += len1 - i1;
                }

                //符合加入
                if (curLen == k) {
                    res += 1;
                }
            }
        }
        return res;
    }

    /**
     *
     * @param node
     * @param leftOrRight 1 left ; 2 right
     * @param list
     */
    public static void goNode(TreeNode node, int leftOrRight, List<Integer> list) {
        //创建新的集合
        List<Integer> nList = new ArrayList<>(list);
        nList.add(leftOrRight);
        //将该节点添加到集合中
        lists.add(nList);

        //若左右子树不为空,则向下递归
        if (node.left != null) {
            goNode(node.left, 1, nList);
        }
        if (node.right != null) {
            goNode(node.right, 2, nList);
        }
    }


    public static void main(String[] args) {
        TreeNode root = new TreeNode(1);
        TreeNode root2 = new TreeNode(2);
        TreeNode root3 = new TreeNode(3);
        TreeNode root4 = new TreeNode(4);
        TreeNode root5 = new TreeNode(5);

        root2.left = root4;
        root2.right = root5;
        root.left = root2;
        root.right = root3;

        Main main = new Main();
        int i = main.leafPairs(root, 3);
        System.out.println(i);

    }
}

class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;
    public TreeNode(int val) {
        this.val = val;
    }
}

【科大讯飞笔试题汇总】2024-04-21-科大讯飞春招笔试题-三语言题解(CPP/Python/Java) K小姐有一个爱好就是收集各种硬币。有一天,她在整理自己的硬币收藏时,突然想到了一个有趣的问题。如果给定一个总金额 amountamountamount,能够用手上现有的硬币面值组合成该金额,需要的硬币数量最少是多少枚呢?现在已知K小姐有 555 种不同面值的硬币,分别为 111、222、555、101010、202020、505050、100100100 元,每种面值的硬币数量都是无限的。请你帮助K小姐设计一个程序,快速计算出给定总金额所需的最少硬币组合。输入仅包含一个正整数 amountamountamo 阅读详情

相关推荐

【秋招笔试】8.18科大讯飞秋招-三语言题解

> 1️⃣ 打卡题,简单的模拟 > > 2️⃣ 很基础的栈模拟题,比较简单 > > 3️⃣ 平时做题不仔细看数据范围的小伙伴有福了!!数据范围看起来需要线性或者log的做法,但仔细分析之后发现是个诈骗题 > > xx: 没啥思路打个暴力骗个分吧,哎,我靠,怎么 AC了 >

春秋招笔试突围 717

科大讯飞笔试题总结(一)(java方向)

2019/10/9,晚上七点参加的科大讯飞的笔试

weixin_43638682的博客 3834

近几年科大讯飞软件笔试题目

近几年科大讯飞软件笔试题目,大概是09-13年的,很难得,比较全

917科大讯飞笔试题1

【代码】917科大讯飞笔试题1。

持之以恒 555

java笔试题大集合及答案(另附各大公司笔试题).zip

java笔试题大集合及答案(另附各大公司笔试题)

科大讯飞面试java基础题

本人是科大讯飞5年老员工,带领团队进行java开发服务器端开发,平时少不了面试一些新员工,附件是我整理的一些面试题,主要针对校招面试,比较基础。文档中对数据库和linux相关的面试并未讲解,请校招生面试前自行查询相关资料,以便面试通过。

科大讯飞笔试题总结(二)(java方向)

前言 科大讯飞单选题此处略过,多选题一共4道,考点分别是: 一道计网题(哪些是TCP服务,哪些是UDP服务); 一道操作系统题(操作系统提供的服务有哪些); 两道Java语言基础题 (下面分别介绍两道Java语言基础题) sleep()和yield()的区别 ① sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更...

weixin_43638682的博客 798

科大讯飞笔试题汇总

关于科大讯飞的笔试题总结。。附答案

2021金三银四 Java面试

面试:人人网(Java武汉) 笔试: 笔试两道算法题 算法1: 长度为1000万的字符串数组,要求去除重复字符串,并以首字母大写其他字母小写输出。 例如:[“Wuhan”,“nanjing”,“Shang Hai”,“Nan jing”] 输出:[“Wuhan”,“Nanjing”,“Shanghai”] 算法2: 比较版本号大小(LetCode 165原题) 面试: 1.ArrayList 和LinkArrayList区别? 2.redis底层数据结构?(不是让你介绍5种数据类型,而是回答5种数据类型底层

Horizon_Ruan的博客 1724

Prometheus+Grafana部署及企业微信邮件/群消息告警通知配置

本文详细介绍了在Ubuntu 22.04系统上部署普罗米修斯监控系统的完整流程。首先说明了系统配置要求(2核CPU、4G内存、100G硬盘),然后分步骤指导下载、解压和安装普罗米修斯服务。文章包含配置prometheus.yml文件、启动服务、设置系统服务等关键操作,并提供了访问9090端口验证服务的方法。接着介绍了通过node_exporter监控Linux主机的配置过程,包括安装、启动服务和修改普罗米修斯配置文件添加监控项。最后还涉及了mysqld_exporter的部署流程,用于监控MySQL数据库服

m0_58761900的博客 1638

Dify社区版多工作空间功能解锁:源码修改与多租户架构解析

多租户架构是现代SaaS平台实现数据隔离与资源管理的核心技术,其核心原理是通过租户模型将用户、应用和数据在逻辑上隔离。在AI应用开发平台中,这种架构能有效支持多团队、多项目并行开发,确保不同业务线的数据安全与独立迭代。Dify作为开源AI应用构建平台,其底层已设计完善的多租户模型,但社区版默认限制了单用户单工作空间。本文通过精准修改两处关键代码——账户初始化逻辑与系统功能开关,释放了平台固有的多工作空间管理能力。该方案无需改动数据库结构,直接利用现有RBAC权限体系,实现了类似企业版的**多租户隔离**体验

weixin_27059669的博客 1059

2021-08-07笔试选择和编程题

笔试题2021.8.7 1.String s;初始化有值么? String m; System.out.println(m); 编译报错,String值必须初始化 2.String类型 char[] 在传递函数中值变化不? string不变,char[]变(string类型数据是不能修改的,传函是新建一个string引用) 3.null 和“”的区别 null指的是一个空对象,这个对象可以是任何一个类的实例。 "“指的是一个空字符串,这个字符串的长度为0。 也就是说null这个对象的类型可以是任何一个类型

qq_38296553的博客 222

Modelsim安装教程以及管理员身份运行patch_dll.bat时找不到文件mgls.dll的解决

Modesim安装教程 Modesim版本有很多,但是安装方式大都相同,我们以modesim.10.5为例,电脑使用的是win10 64位,讲一下安装过程中的步骤以及出现问题的解决方法 一 安装 1.首先解压安装包,在解压的安装包内选择应用程序,右键选择管理员运行。 2.稍等一会,有的电脑会弹出是否允许modesim进行更改,选择 是 即可,然后出现下面的界面,点击下一步。 3.弹出此界面选择安装路径,选择安装路径,我是在D盘新建的文件夹,直接把文件夹中的路径复制在框内。文件夹名称切记不要带中文 4.

weixin_48564372的博客 1万+

题解 | #2021年11月每天新用户的次日留存率#

机械人,你的秋招第一份简历被谁挂了# 拓竹科技,悄无声息得被冷暴力了 #如果可以,你希望哪个公司来。双非本211硕无实习无论文,投了10几个提前批,2家简历挂(应该是卡本了),1家笔试挂,1家笔试推迟。#机械人,你的秋招第一份简历被谁挂了# 实习的简历已经被太多家企业挂了,数不清,根本数不清。高考分数650我编的,那个小公司HR的p事太多了,我直接拉黑了我自己的亲身体验是不太建议大家投百人以。#机械人,你的秋招第一份简历被谁挂了#翻了很久我的邮箱,想看我的老公跟我说的第一句话,可惜找不到了,

华鑫的专栏 925

PPT里文字太多如何排版-一口气教你7种布局瞬间让PPT高大上起来

PPT里全是文字且很拥挤怎么办?本篇教你使用7种不同的排版让你的PPT瞬间变得高大上起来。

打造全国最全的AI Agent开发知识领域的博客 5022

微信小程序(云开发) - 实现微信小程序拼团功能+前后台源码/数据库设计,开团参团、自动成团、微信分享链接URL参与拼团、组团人数/倒计时/实时数据、设置拼团人数限制等(拼团退款处理逻辑、订单同步等)

实现微信小程序云开发拼团功能,云开发小程序--微信拼团设计实现,微信小程序实现秒杀、拼团等效果,微信小程序云开发拼团源码完整版 包含前后台和数据库,拼团商城小程序开发,分销,拼团,社群团购,微信小程序—判断参团人数(设置拼团剩余人数数组)拼多多拼团小程序开发,微信云开发教程怎么实现微信小程序云开发拼团功能?云开发如何实现拼团,拼团小程序怎么弄,微信小程序案例:拼团模块,需要朋友助力,详细源码demo示例,如何做拼团功能,云开发小程序如何做拼团功能,外卖电商拼团,仿拼多多拼团,拼团后退款怎么办,拼团后订单管理

🏆 前端领域优质创作者 4628

【100%通过率】华为OD机试真题 Python 实现【字符串重新排列】【2022.11 Q4新题】

给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出: 1、单词内部调整:对每个单词字母重新按字典序排序 2、单词间顺序调整: 1)统计每个单词出现的次数,并按次数降序排列 2)次数相同,按单词长度升序排列 3)次数和单词长度均相同,按字典升序排列 请输出处理后的字符串,每个单词以一个空格分隔。

MISAYAONE的博客 7982

首创“净洁厨房体系”,华帝为中国厨房打造三重“净”界

晒一晒我的offer# 研一的时候计划在24年毕业前多去尝试不同的岗位,所以有了几段不同类型的实习~最近的一段实习是在水羊国际,对我个人而言,节奏没有电子消费。我说测评挂了还能面试!美团测试开发工程师 2023-09-16 笔试后过了几天变成筛选中,以为很快就会有面试,结果今天早上就变成回到人才库,流程也显示已结束了,只投了这一个志愿,请问。想想挺搞笑的,卷实习,卷八股,确实能应付前几轮面试,但是现在越来越多的场景题,你说我一个实习生哪见过那些高并发,机器容灾,各种现实的场景问题,给的答案已经是自己。

华鑫的专栏 341

22、用户界面流程(UI Flow)全解析

本文全面解析了用户界面流程(UI Flow)的概念、创建步骤及其在系统设计中的应用。通过示例和操作步骤,详细介绍了如何确定屏幕范围、识别屏幕、创建过渡和标记触发器,并阐述了UI Flow在导航识别、验证、可用性优化、测试用例开发和需求推导中的重要作用。文章还结合问答系统案例,展示了UI Flow的实际应用价值,帮助读者深入理解并有效运用这一工具提升系统用户体验。

rice5的博客 154

如何在SpringBoot中实现AI 流式输出?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1481

题解 | 获取员工其当前的薪水比其manager当前薪水还高

第一题题目描述:a有三个区间[l1,r1] [l2,r2] [l3,r3],a,b在这三个区间内同时选择一个自己喜欢的区间,这两个区间不能相同接下来a和b需要在。灵犀互娱笔试,五道都很简单..直线交点的想复杂了,其实就是求每个数划分成不同的数相加,然后计算每个划分的交点个数,其他的一部分用map/set和优先队列结合就能。选择题加简答题加编程题。本人投的测开,美团前两个流程终止了,还有一个流程准备投,求助牛友最后投哪个部门还有hc,为什么有实习笔试也还行连一面也进不了呀 #夸夸我的求职搭子# #你收到了。

2301_79125642的博客 950

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 网易游戏互娱 笔试题2021.8.7 Java版
下一篇: layui中实现动态的cols表头字段
jf-lin
博客等级 码龄7年 37粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值