华为外包l两道面试算法题。

今日下午刚结束面试。一共两技术人员面的,一人出了一道算法题,记录下,并为以后做些准备,由于远程面试,所以没有代码测试,不知道行不行的通,且行且看吧。

1、输入为String 字母卡片(可以重复)和一个单词,问利用字母卡片是否能拼出单词。
  事例:字母卡片“Zoos”,单词“Zoo”
      答案是可以的输出true
      如果单词是“Zoom”
      输出为FALSE
/*我一共给他说了两个解法,并写出了代码,
第一个是利用数组实现的,效率不高,在这就不写了,简单说下思路吧,
就是把这两个输入都转换成数组,
然后对单词数组的每一个挨个比较卡片是否有,
若是有就将这两个为位置的字符用特殊字符如数字1代替
表明可以匹配的上且卡片也用掉了,遍历完接下来,
看字母数组是否全是特殊字符,若是,则返回真,否则为假
第二个解法是医用hash表进行操作,在这边写下吧*/
public boolean canweDo(String card,String world){
    boolean flag=true;
    Map<character,Integer> cardMap=new HashMap<>();
    Map<character,Integer> worldMap=new HashMap<>();//整形用于存储字母出现的次数
    //接下来初试化两个表
    int num1=card.length;
    for(int i=0;i<num1;i++){
    int k=0;
    char a=card.charAt(i)
    if(cardMap.containsKey(a)){
        k=cardMap.get(i);
        k++;
     }
    cardMap.put(a,k);
   }
    int num2=world.length;
    for(int i=0;i<num2;i++){
    int k=0;
    char a=world.charAt(i)
    if(worldMap.containsKey(a)){
        k=worldMap.get(i);
        k++;
     }
    worldMap.put(a,k);
   }
   //接下来进行判断了,首先看是否有所有的单词
     Set set1=cardMap.keySet();
     Set set2=worldMap.keySet();
   //再看字母卡片数目是否足够

return flag;
}  
第二道题目是求一个整形数组的最大连续子串的长度,
我是利用一个二维数组蛮力解决所有的子串,再根据值在二维数组的位置找到
连续子串的长度的。
public int lengthMaxSub(int[] a){
 int[][] max1=new int[a.length][a.length];
 for(int i=0;i<a.length;i++)
   for(int j=i;j<a.length;j++)
     max1[i][j]=cal(a,i,j);//函数调用计算子串值
  int tempMax=0;
   for(int i=0;i<a.length;i++)
    for(int j=i;j<a.length;j++)
     tempMax=Max(temp,a[i][j]);//找到最大值
     int k=0,t=0;
    for(;t<a.length;t++){
      while(max1[t][k]!=temp)
        k++;
       if(max1[t][k]!=temp)
         break;
       else k=0;
       }
     return (k-t);
    }
public int cal(int[] a,int k,int j){
  int temp=0;
  for(int i=k;i<=j;i++)
    temp=temp+a[i];
  return temp;
  }
   

搞定,心累啊啊啊

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为外包c开发岗面试可能涉及了一些基本的C语言知识和编程技巧。以下是一个可能的回答,仅供参考: 在华为外包C开发岗的面试中,我可能会遇到以下类型的问: 1. C语言的基本知识:面试官可能会询问C语言的基本语法和数据类型、变量定义和声明、控制语句、函数的定义和调用等。我会回答这些问,展示我对C语言的熟悉程度。 2. 数据结构算法面试官可能会询问一些关于数据结构算法方面的问,例如链表、树和排序算法等。我会展示我对这些基本数据结构算法的理解和应用能力。 3. 内存管理:面试官可能会问到内存动态分配和回收的问,如malloc和free函数的使用。我会解释并演示我对内存管理的理解和熟练运用。 4. 文件操作:面试官可能会通过询问文件读写、打开和关闭等问来考察我在文件操作方面的经验和熟练度。我会回答这些问,并展示我在文件操作方面的实践经验。 5. 多线程编程:华为外包可能涉及到一些多线程编程。面试官可能会询问线程的概念、线程同步和线程通信的方法等问。我会解释我对这些概念和技术的理解,并举例说明我在实践中如何应用它们。 总之,我会在面试中展示我对C语言的广泛知识和丰富的实践经验。我相信我在C开发方面的技能和技巧将使我成为一个优秀的华为外包C开发岗的候选人。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值