上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

华为1.24秋招笔试题

guduadmin221月前

华为1.24秋招笔试题

1.题目1

题目详情 - 2024.1.24-华为秋招笔试-第一题-计算积分 - CodeFun2000华为1.24秋招笔试题,image-20240130111133694,第1张

1.1题解

import java.util.Scanner;
class Main{
     public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        char[] ch=s.toCharArray();
        int res=0;
        int i=0;
        int n=ch.length;
        while(i
            int start=i;
            if(ch[i]=='r')res+=1;
            else if(ch[i]=='g')res+=2;
            else if(ch[i]=='b')res+=3;
            i++;
            while(i
                 if(ch[i]=='r')res+=1;
                else if(ch[i]=='g')res+=2;
                else if(ch[i]=='b')res+=3;
                res+=(i-start);
                i++;
            }
        }
        System.out.println(res);

 }
}

1.2循环数组模板

  • 适用场景:需要对分段多数组中的多个子数组分段处理,每一段处理逻辑相同

  • 核心思想

    • 外层负责遍历组之前的准备工作,记录开始位置,更新答案
    • 内层负责遍历,找出这一组最远在哪结束
      int n = nums.length;
      int i = 0;
      while (i < n){
          start = i//外层
        
             //内层 
             while (i < n && ...){
           i += 1;
        
          }
         
              }
      

      2.题目2

      题目详情 - 2024.1.24-华为秋招笔试-第二题-大模型训练 - CodeFun2000

      华为1.24秋招笔试题,image-20240130111240372,第2张

      2.1思路分析

      • 这道题与lc 410 分割数组最大值一样,只不过进行了包装而已
      • 贪心+二分
      • 我们这里使用二分搜索算力的最低值 UP
        • up值越小,段数越多,时间越长;反之越少,时间越短
        • 如果在up的情况下,贪心划分出的段数小于 T 说明还可以继续降低up
        • 否则 需要增加up

          2.2代码

          import java.util.*;
          class Main{
              static int t;
               public static void main(String[] args){
                  Scanner sc=new Scanner(System.in);
                  int n=sc.nextInt();
                  t=sc.nextInt();
                  int[] task=new int[n];
                  int sum=0;
                  int l=0;
                  for(int i=0;i
                      task[i]=sc.nextInt();
                      l=Math.max(task[i],l);
                      sum+=task[i];
                  }
                  
                  int r=sum;
                  while(l
                      int mid=l+r>>1;
                      if(check(task,mid)){
                          r=mid;
                      }else l=mid+1;
                      
                  }
                  System.out.println(l);
          
           }
             //贪心划分模板可以记一下
           static boolean check(int[] nums,int up){
                  int cnt=1;//至少可以划分为1份
                  int sum=0;
                  for(int num:nums){
                      if(sum+num>up){
                          cnt++;
                          sum=num;
                      }else{
                          sum+=num;
                      }
                  }
                  return cnt<=t;
                  
              }
          }
          

网友评论

搜索
最新文章
热门文章
热门标签
 
 爬向高处  做梦抓鱼好不好  原版周公解梦狗