(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。#华为od机试##华为机试,emo了#
为了支撑招聘活动高效顺利进行,请你计算至少需要多少名面试官。
输入描述:
输入的第一行为面试官的最多面试人次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)