8/9 华为od 机试 js 已凉
本人22届本科,自学前端,非计算机专业,正在找工作,欢迎介绍,感谢介绍!
正文:
第一题:字符串换最小字符串
(5条消息) HUAWEI 机试题:字符串变换最小字符串_leo_qiu_s的博客-CSDN博客_字符串变换最小字符串
该题个人代码如下
通过率只有23%,欢迎大佬解答
let str = readline() let arr = str str = str.split('') arr = arr.split('').sort() for(let i =0;i<str.length;i++){ if(str[i] != arr[i]){ let temp = str[i] let j = str.indexOf(arr[i]) str[i] = str[j] str[j] = temp break } } console.log(str.join(''))
第二题:(5条消息) 华为机试练习(十一)求数组中最大n个数和最小n个数的和_下一个路口遇见你48的博客-CSDN博客_最大n个数与最小n个数的和
该题通过率为 94.5%
第三题:求最少需要的面试官数量
题目求助 | 求最少需要的面试官数量 - 力扣(LeetCode)
这个题目,没有debug出来,钻牛角尖了
洗了个澡后,做出来了,欢迎大佬指点
/* 某公司组织一场公开招聘活动,假设由于人数和场地的限制,每人每次面试的时长不等,并已经安排给定,用(S1,E1)、(S2,E2)、(Sj,Ej)...(Si < Ei,均为非负整数)表示每场面试的开始和结束时间。面试采用一对一的方式,即一名面试官同时只能面试一名应试者,一名面试官完成一次面试后可以立即进行下一场面试,且每个面试官的面试人次不超过m。 为了支撑招聘活动高效顺利进行,请你计算至少需要多少名面试官。 输入描述: 输入的第一行为面试官的最多面试人次m,第二行为当天总的面试场次n,接下来的n行为每场面试的起始时间和结束时间,起始时间和结束时间用空格分隔。 其中,1 <= n, m <= 500 输出一个整数,表示至少需要的面试官数量。 示例1: 2 4 1 2 3 5 4 7 6 8 输出:2 */ // ---------------------------------------------------- let m = 2 let n = 4 let arr = [[1,2],[3,5],[4,7],[6,8]] //整理排序 ,排序后,一个面试官一场面试,依次轮流发放 arr.sort((a,b)=>{ if(a[0]==b[0]){ return a[1]-b[1] }else{ return a[0]-b[0] } }) //最少面试官数量 let mianshiguan = Math.ceil(n/m) // 具体面试官的最后一场面试时间 let msgs = new Array(n).fill([0,0]) // .fill() 方法填充的是数据地址,重新深拷贝一次,大坑!! let msg =JSON.parse(JSON.stringify(msgs)) let result = mianshiguan let f = 0 // 安排成功的标志 // 面试官最多为n for(let k = mianshiguan;k<=n;k++){ f = 0 for(let i =0;i<arr.length;i++){ if( msg[i%k][1]<arr[i][0]){ msg[i%k][0]= arr[i][0] msg[i%k][1] =arr[i][1] }else{ // 当排序后,安排给面试官的场次,面试官时间无法接受,后面的面试官时间肯定也接受不了,因此添加一个面试官 即 k++ f= 1 msg.forEach(a=>{ return [a[0],a[1]] = [0,0] }) break } } if(f==0){ result = k } } console.log(result)#华为od机试##华为机试,emo了#