最近参与了一场阿里的软件开发实习岗的笔试,于是想将题目分享一下~

如果有啥更好的想法欢迎交流~

Here We Go!

题目一

小明现在有一个长度为 n 的不递减序列,现在你可以操作任意次(可以不进行操作) ,每一次操作可以让某一个位置上的数增加1,但是每一个位置的数最多只能操作一次,现在想问你通过这个操作,能让新产生的序列中最多有多少个不同的数(重复的数算1个)。

输入描述

每一个文件输入第一行输A一个整数T (1 < T < 1000),代1表有T组测试数据。接下来T组,每一组第一行输入一个整数n (1 < n
< 10^5)。接下来输入n个整数,a[i] (1 ≤ a[i] ≤ 2*n) 代表序列中的每一个元素。

数据保证每一个文件内n的总和不超过100000

输出描述

对于每一组测试数据,输出一个答案代表最多有多少个不同的整数。

示例输入

2
6
1 2 2 2 5 6
2
4 4

示例输出

5 2

示例说明

对于样例第一组:序列变为1,2,3,2,5,6,此时不同元素最多

对于样例第二组:将这两个数任意一个数进行处理即可

思路
因为是不递减序列,所以我们可以定义一个set集合,然后开始遍历序列,遍历过程中操作如下:

  1. 每当遍历一个数,先判断该数是否已在set集合;
  2. 如果该数在set集合中不存在,那么直接将该数加入set集合;
  3. 如果该数在set已存在集合中,那么不妨将这个数 +1 后再加入set;
  4. 遍历完序列后,set集合即为 “最多不同的元素” 的集合,集合容量大小作为返回值即可。

示例代码

public static int maxDiffNum(){// 此处省略输入数据的处理// seq即为非递减序列int[] seq = new int[]{1, 2, 2, 2, 5, 6};// 定义一个hashsetSet<Integer> set = new HashSet<>();for(int num : seq){// 如果该数在set集合中不存在,那么直接将该数加入set集合// 否则将这个数 +1 后再加入setif(!set.contains(num)){set.add(num);}else{set.add(++num);}}// 最后返回set集合的大小return set.size();}

题目二

小明现在有两个数a和b,初始值均为n,现在小明有以下4个操作:

  1. 将数a变成a - 100,若为负数,则记作0
  2. 将数a变成a - 75,数b变成b - 25,若为负数,则记作0
  3. 将数a变成a - 50,数b变成b - 50,若为负数,则记作0
  4. 将数a变成a - 25,数b变成b - 75,若为负数,则记作0

假设 P(A) 代表数字a先变成0的概率,P(AB) 代表数字a,b同时变成0的概率,P(B) 代表数字b先变成0的概率。小明想知道 P(A) + P(AB)/2 的值是多少
已知每一个操作是独立的且等概率的

输入描述

每一个文件输入第一行输入一个整数T(1 ≤ T ≤ 1000),代表有T组测试数据
接下来T组,每一组第一行输入一个整数n(1 ≤ n ≤10^9),代表两个数字的初始值

输出描述

对于每一组测试数据,输出一个小数代表要求的概率,误差在10^-5均算正确。

示例输入

2
50
100

示例输出

0.62500000
0.71875000

思路

用深搜去遍历所有可能出现的情况,每次递归一个操作:每次遍历的结果可能是以下四种:

  1. a > 0 且 b > 0;
  2. a > 0 且 b ≤ 0;
  3. a ≤ 0 且 b > 0;
  4. a ≤ 0 且 b ≤ 0;

如果是情况1,则继续深度搜索四个操作;
如果是情况2,则将总的出现的情况+1;
如果是情况3,则将P(A)出现的情况+1;
如果是情况4,则将P(AB)出现的情况+1。

最后计算P(A)出现的情况次数占总次数的比例,以及P(AB)出现的情况次数占总次数的比例,根据题目要求概率相加即可。

示例代码

//初始P(A)和P(AB)的情况都是0public static int pa = 0;public static int pab = 0;public static int psum = 0;public static double computeProbability(int n){computeProbabilityDfs(n, n);double PA = pa;double PAB = pab;double PSUM = psum;return PA / PSUM + PAB / PSUM / 2;} public static void computeProbabilityDfs(int a, int b){if(a < 0 || a == 0 && b > 0){++psum;++pa;}else if((a < 0 || a == 0) && (b < 0 || b == 0)){++psum;++pab;}else if(a > 0 && b > 0){computeProbabilityDfs(a - 100, b);computeProbabilityDfs(a - 75, b - 25);computeProbabilityDfs(a - 50, b - 50);computeProbabilityDfs(a - 25, b - 75);}else{++psum;}}

Alibaba SWE 实习岗 笔试题 JAVA相关推荐

  1. 华为 SWE 实习岗 笔试题 JAVA

    最近又参与了一场华为的软件开发实习岗的笔试,于是想将题目分享一下~ 如果有啥更好的想法欢迎交流~ Here We Go! 题目一 幼儿园老师安排小朋友做游戏,现在需要给 N 个小朋友进行分组,老师让每 ...

  2. 数据分析师实习岗笔试题(part1)

    笔试后记,仅供参考 因为公司说不能泄露笔试题,所以我就加了点润色,但是不影响内容 限时免费:3小时 前言 笔试时间:2020年6月 笔试方式:在线笔试 笔试内容:sql语言.R语言/python.统计 ...

  3. 美团点评实习生算法岗笔试题 (java) 2020.04.23场

    T1 幸运星 题目描述 在观星的时候,一种常用的方式是划出类似于正方形的区域内,确定其中所有星星的坐标. 现在我们在星空(一个无限大的二维平面)上简历坐标系.由于星星很小,我们忽略它的面积,认为每一个 ...

  4. 华为2018届校招技术岗笔试题及个人解答

    前言 昨天(9.13)参加了华为2018届的技术岗笔试,特此总结一下笔试的题目和我个人的解答思路. 笔试题一共是三道编程题,大致是数值反向输出,比较和排序,相对较基础. PS:由于没有截图,所以题目是 ...

  5. 2021唯品会秋招数据开发岗笔试题

    2021唯品会秋招数据开发岗笔试题 题型分布 单选题 多选题 问答题 简答题 由于过了一段时间才写这篇博客,有些题目已经记不清了,同时也没有找到相同的题目,因此只能简单描述,多见谅. 题型分布 单选题 ...

  6. 腾讯2016春招安全岗笔试题解析

    腾讯2016春招安全岗笔试题解析 昨天(4月2日)晚上7:00到9:00做了腾讯春招安全岗的笔试题.下面解析一下: 题目解析 1 在生成随机数前用当前时间设置随机数种子应该是安全的.如果程序用固定的数 ...

  7. 网易2018实习生招聘笔试题-JAVA开发实习生

    网易2018实习生招聘笔试题-JAVA开发实习生 如何从有数字规律的网址抓取网页并保存在当前目录?假设网址为 http://test/0.xml,其中这个数字可以递增到100. for(int i=0 ...

  8. 2019校招硬件岗笔试题(乐鑫科技+比特大陆)

    2019校招硬件岗笔试题(乐鑫科技+比特大陆) 都是提前批次的笔试题,乐鑫科技是现场笔试,监考还挺严格的.写一写回忆版的笔试题. 乐鑫考察的比较多,但是都很基础,关于高速电路部分,推荐<信号完整 ...

  9. 潇洒郎: 去哪儿2021届/2020年开发岗笔试题分享

    去哪儿2021届/2020年开发岗笔试题分享 1. 2020年,直播已经成为去哪儿网酒店预售的新武器, 去哪儿网CEO刚哥想从公司的m名员工中挑选n名参与自己的直播,已知m小于100请问一共有多少种选 ...

最新文章

  1. linux 系统相关服务解释
  2. Oracle体系结构及备份(十六)——bg-ckpt
  3. 2020 操作系统第四天复习(知识点总结)
  4. MyEclipse 14 设置文件特定的打开方式
  5. JS 构造图片Image对象
  6. SQLServer UPDATE INNER JOIN、DELETE INNER JOIN
  7. .NET MVC扩展UrlHelper支持CDN
  8. vue 组件 全局组件和局部组件component
  9. Vue3.0 + Ts 项目框架搭建四:配置 Svg-Icon、Icon图标
  10. javascript设计模式_详解JavaScript的常用设计模式(二)
  11. 819 c语言程序设计,大连海洋大学2021年考研819高级语言程序设计(C语言)考试大纲...
  12. 瑞利衰落信道matlab,瑞利衰落信道的matlab仿真-read.doc
  13. 安装拼音加加时出现问题
  14. python与java前景分析-Java和Python哪个未来前景好?
  15. supermap mysql_超图supermap sdx数据库用sql实现空间查询
  16. Thread yield
  17. ImportError: cannot import name ‘MobileNetV2‘ from ‘keras.applications‘解决方法
  18. 杭州金田电磁流量计数据解析之读出累计总量
  19. unity 调用高德地图手机读取信息定位和周边(AndroidStudio3.1.2版本打包)。
  20. 中科蓝讯蓝牙: 530X_532X 等音量系统调节

热门文章

  1. 少儿编程Scratch学习教程--Scratch3.0界面简介
  2. 曲线积分与曲面积分总结_高等数学课程内容、知识点总结与典型题
  3. java.lang.Long常用方法
  4. Single-Stage 6D Object Pose Estimation——6D姿态估计
  5. Android 多国家语言适配
  6. 柔性电子:大面积全纺织压力传感器用于检测人类移动和物理信号
  7. 安装SQL Server和SQL Server Management Studio(SSMS)
  8. RK3399教程:linux clk使用
  9. MATLAB完成BSC信道
  10. 常用String方法大全