每日一算:2021.4.23
作者:互联网
大家好,我是梅巴哥er
。今天继续算法的练习。
第3题:无重复字符的最长子串
- 这道题是中等难度,果然感受到了这种难度。思考了好久,一步步修改,才解决。
- answer
/**
* 1,拿出第一个字符,放进数组
* 2,拿出后面的一个元素
* 3,判断这个元素是否和前面的字符相同 且在数组里面是否已经存在
* 4,如果不同且不存在,就放进数组,继续看后面的元素
* 5,如果相同或已存在,不放进数组,并从第二个开始
* 6,以此类推,使用递归
* 7,准备一个对象,存放这些数组
* 8,把对象中各个属性的长度,放进一个数组进行排序
* 9,把长度最大的值找出来,就是结果
*/
function getChildStrLen(str) {
if(str.length === 0) {
console.log(0)
} else if(str.length === 1) {
console.log(1)
} else {
let obj = {}
for(let i = 0; i < str.length; i++) {
let arri = 'arr' + i
obj[arri] = []
}
// console.log(obj)
let num = 0
let strLenth = str.length
function getLongestStr(str) {
if(num < strLenth) {
if(str.length === 0){
return
} else if(str.length === 1) {
obj['arr' + num].push(str[0])
return
} else {
obj['arr' + num].push(str[0])
for(let i = 1; i < str.length; i++) {
if(str[i] !== str[i-1] && !obj['arr' + num].includes(str[i])) {
obj['arr' + num].push(str[i])
}
}
num++
getLongestStr(str.slice(1))
}
}
}
getLongestStr(str)
let arrLenth = []
// console.log(obj)
for(let k in obj) {
arrLenth.push(obj[k].length)
}
let arr = arrLenth.sort((a, b) => b - a)
console.log(arr[0])
}
}
// test
let str = 'abcabcbb'
getChildStrLen(str)
// 输出 3
第4题:寻找两个正序数组的中位数
这道题标注是困难的难度,但是我不明白他困难在哪里,有知道的小伙伴,请告知我一下。。。
/**
* 1,两个数组合并,
* 2,从小到大排序,得到一个新数组
* 3,新数组的长度为length,length如果是0,输出"没有要找的中位数"
* 4,length如果是1,输出这个新数组的唯一元素即可
* 5,length大于1,如果length是奇数,那么中位数的下标就是(1+length)/2
* 6,如果length是偶数,中位数就是length/2和length/2 - 1两个值的平均数
* 7,输出结果要求保留5位小数,用Math方法的num.toFixed(5)处理一下
* 8,输出结果
*/
function getMedian(num1, num2) {
let arr = []
arr = num1.concat(num2)
// console.log(arr)
if(arr.length === 0) {
console.log('注意:你给的两个数组,不存在合并后的中位数,请检查参数!')
} else if(arr.length === 1) {
console.log(arr[0].toFixed(5))
} else {
let arr1 = []
arr1 = arr.sort((a, b) => a - b)
let length = arr1.length
if(arr1.length % 2 === 1) {
let len = (1+length)/2
console.log(arr1[len].toFixed(5))
} else {
console.log(((arr1[length/2] + arr1[length/2 - 1])/2).toFixed(5))
}
}
}
// test
let num1 = []
let num2 = []
getMedian(num1, num2)
以上。
标签:arr,console,2021.4,23,每日,length,let,str,obj 来源: https://blog.csdn.net/tuzi007a/article/details/116042937