华为机试分享2021.02.24
华为2021.02.24机试
1. 情景题: 公司要分配住房,分配规格:根据每个职工的绩效,工作年限,婚姻状况,姓名来进行相应排序。优先度(绩效 > 工作年限> 婚姻状况 > 姓名) 输出相应顺序的职工姓名
2. 字符串生成: m种字符, 组成两个字符串S和P(每个字符重复出现,P和S均由大写字母组成) P可以为空。 现尝试在P插入字符生成S。(每次只能长度>= 3 的同一种字符,且可以插入任意位置),问最少几步可以由P生成S
3. 确定竞赛名次 : n个选手,进行m场1v1 比赛,根据m场比赛结果,试问有多少选手的排名已经是确定了的。 举个例子 5 名选手 按编号1,2,3,4,5 比赛 4 次 1 赢 2 , 3 赢 2, 4 赢 2, 2 赢 5. 可以知道2,5的名次是可以确定的。所以输出为2。
第一题没啥难的,用comparator就行
第二题楼主一开始想用hashmap 来统计每个字符串的出现个数来判断最少要几次。但这样就完全没考虑到每个字符的位置信息。 要么字符串S左右同时删除相同的字符来看最后能不能得到P,但不知道怎么写
第三题我用的二维数组来储存每场比赛的结果, 统计每个选手比他强和比他弱各有多少人,如果两个数字相加等于人数-1, 那么就表示这个人的名次已经能够确定了。但比较难的是怎么找的哪些隐性的可以确定名次的选手,比如例子中的选手5.
发出来和大家分享一下,也希望能有高人为我指点迷津。不是科班出生,第二第三题我都觉得挺难的。