(5条消息) HUAWEI 机试题:字符串变换最小字符串_leo_qiu_s的博客-CSDN博客_字符串变换最小字符串
该题个人代码如下
通过率只有23%,欢迎大佬解答
let str = readline()let arr = strstr = 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:241 23 54 76 8输出:2*/// ----------------------------------------------------let m = 2let n = 4let 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 = mianshiguanlet f = 0 // 安排成功的标志// 面试官最多为nfor(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了#