华为机试100分题目

分享一些题目的基本方法和思路
请添加图片描述

//使用一个哈希表存储
Map<Integer,List<String>> = new HashMap<>();

请添加图片描述

//先比身高,身高一样比体重
// 使用优先队列
import java.util.*;

class Student implements Comparable<Student> {
    int id;
    int height;
    int weight;

    Student(int id, int height, int weight) {
        this.id = id;
        this.height = height;
        this.weight = weight;
    }

    @Override
    public int compareTo(Student other) {
        if (this.height != other.height) {
            return this.height - other.height; // 身高升序
        } else if (this.weight != other.weight) {
            return this.weight - other.weight; // 体重升序
        } else {
            return this.id - other.id; // 编号升序
        }
    }
}

public class StudentSort {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 读取学生数量
        int n = scanner.nextInt();
        int[] heights = new int[n];
        int[] weights = new int[n];

        // 读取身高和体重
        for (int i = 0; i < n; i++) {
            heights[i] = scanner.nextInt();
        }
        for (int i = 0; i < n; i++) {
            weights[i] = scanner.nextInt();
        }

        // 创建学生列表
        List<Student> students = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            students.add(new Student(i + 1, heights[i], weights[i]));
        }

        // 使用PriorityQueue进行排序
        PriorityQueue<Student> pq = new PriorityQueue<>();
        pq.addAll(students);

        // 输出排序后的学生编号
        while (!pq.isEmpty()) {
            System.out.print(pq.poll().id + (pq.isEmpty() ? "" : " "));
        }

        scanner.close();
    }
}

请添加图片描述
请添加图片描述

//数组排序求和
 int sum = Arrays.stream(numbers).sum();  

请添加图片描述

请添加图片描述

//用哈希表来做

请添加图片描述

//DFS遍历树,注意二叉树的性质,某个节点为i,左子节点为2*i+1,右子节点为2*i+2
 class Treenode{
    int val;
    Treenode l;
    Treenode r;
    Treenode(int val){
       this.val=val;
       this.l=null;
       this.r=null;
    }
}

public class spentTime {
     static int ans=0;
    public static void dfs(Treenode root,int pathSum){
        if(root.l==null&&root.r==null){
            ans = Math.max(pathSum+ root.val,ans);
            return;
        }
       if(root.l!=null){
            dfs(root.l,pathSum+root.val);
        }
        if(root.r!=null){
            dfs(root.r,pathSum+ root.val);
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] nums = new int[1000];
        int i=0;
        while (sc.hasNextInt()){
            nums[i++] = sc.nextInt();
        }
        Treenode[] list = new Treenode[i];
        for(int j=0;j<i;j++){
        if(nums[j]!=-1){
            list[j]  =new Treenode(nums[j]);
        }
        }
        //二叉树的性质
        for (int j = 0; j < i; j++) {
            if (nums[j] != -1) {
                if (j * 2 + 1 < i) {
                    list[j].l = list[j * 2 + 1];
                }
                if (j * 2 + 2 < i) {
                    list[j].r= list[j * 2 + 2];
                }
            }
        }
        Treenode root = list[0];
        ans=0;
        dfs(root,0);
        System.out.println(ans);
    }
}

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@业精于勤荒于嬉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值