您当前的位置: 首页 > 

TechGuide

暂无认证

  • 4浏览

    0关注

    176博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

荣耀秋招机试三道编程题(2021-08-14)

TechGuide 发布时间:2021-08-19 10:13:21 ,浏览量:4

恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。 作者@TechGuide【全网同名】 点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝

文章目录
  • 提示
  • 第一道:将字母分为3个等级输出(100%)
    • 题目描述
    • 思路解析
    • 参考代码:
  • 第二道: 推荐歌曲(100%)
    • 题目描述
    • 思路解析
    • 参考代码
  • 第三道:切水果
    • 题目描述
    • 参考代码

提示
  1. 类似华为,甚至有出现过之前的原题。
  2. 难度不大。
第一道:将字母分为3个等级输出(100%) 题目描述

将字母分为高中低三个等级,输入一个字符串,将三个等级的字母分开,然后排序。

思路解析

方法一:

三个按字典序排序的优先队列即可·

方法二:

用三个动态字符串StringBuilder分别存储三个等级的字符,然后通过Arrays.sort对每个等级的字符排序,所以需要提前将sb类型转为char数组,最后输出字符串。

对于这种排序问题可以使用优先队列,这个我平时不习惯用,但是看了一下人家的代码,似乎很好用。PriorityQueue是用的二叉树实现的小顶堆,可以通过add(t)添加一个节点,poll()删除堆顶元素,时间复杂度O(logN);peek()检索堆顶元素-不删除,复杂度O(1);要生成大顶堆可以使用new PriorityQueue(Collections.reverseOrder())。

switch和if-else比较:二者根本区别是switch会生成一个“跳表”,跳表的索引号和case的值相同,直接通过访问跳表的索引号就可以直接定位到相应的分支,这是一种空间换时间的做法;而if-else是逐个判断,定位到相应分支的做法。相比之下,if-else结构更加灵活,适合处理非【常量】的判断条件;switch定位分支较快,一般用于判断数据不多,并且数据类型是char、int等类型比较适合。

参考代码:

方法一

import java.util.PriorityQueue;
import java.util.Scanner;

public class Main1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        PriorityQueue q1 = new PriorityQueue();
        PriorityQueue q2 = new PriorityQueue();
        PriorityQueue q3 = new PriorityQueue();

        for(int i=0;i            
关注
打赏
1665329535
查看更多评论
0.0395s