20250311

判断A、B数组的包含关系(值和数量),A属于B返回1,B属于A返回2,两者相等返回0,其他返回-1

js 复制代码
function checkArrayRelation(A, B) {
    const treqA = getTreqNum(A)
    const treqB = getTreqNum(B)
    const subA = getSubSet(treqA,treqB)
    const subB = getSubSet(treqB,treqA)
    if(subA && subB){
        return 0
    }else if(subA) {
        return 1
    }else if(subB) {
        return 2
    }else {
        return -1
    }
    
}
// 统计该值出现的频次
function getTreqNum(arr){
    const treqObj = {}
    for(const num of arr) {
        treqObj[num] = (treqObj[num] || 0) + 1
    }
    return treqObj
}
// 判断是否为子集
function getSubSet(smallArr, bigArr){
    for(const num in smallArr){
        if(smallArr[num] > bigArr[num] || !(num in bigArr)){
            return false
        }
    }
    return true
}
console.log(checkArrayRelation([1, 2, 2], [1, 2, 2, 3]));    // 1(A 属于 B)
console.log(checkArrayRelation([1, 2, 2, 3], [1, 2, 2]));    // 2(B 属于 A)
console.log(checkArrayRelation([1, 2], [1, 2]));             // 0(相等)
console.log(checkArrayRelation([1, 2], [2, 3]));             // -1(无关系)
console.log(checkArrayRelation([1, 1], [1, 2]));             // -1(A 不属 B,B 不属 A)
console.log(checkArrayRelation([1, 2], [1, 1, 2]));          // 1(A 属于 B) 

实现函数solution(arr, k)

arr是number数组,k是number,返回前k个最小的数字组成的数组,**保持相对顺序** 输入:[1,2,3,4,5,3,2],3,输出:[1,2,2] 输入:[1,2,3,4,5,3,2],4,输出:[1,2,3,2] 输入:[1,2,3,4,5,3,2],5,输出:[1,2,3,3,2]

js 复制代码
function solution(arr, k){
    if(k === 0 || arr.length == 0) return []
    const indexArr = 
        arr.map((value, index)=> ({value,index}))
           .sort((a, b)=> a.value - b.value || a.index - b.index)
    return indexArr.slice(0, k)
        .sort((a, b)=> a.index - b.index)
        .map(item=> item.value)
}
console.log(solution([1, 2, 4, 3, 2], 4));  // [1, 2, 3, 2]
console.log(solution([1, 2, 4, 3, 2], 2));  // [1, 2]
console.log(solution([1, 2, 3, 4, 5, 3, 2], 3)); // [1, 2, 2]
console.log(solution([1, 2, 3, 4, 5, 3, 2], 5)); // [1, 2, 3, 3, 2]
相关推荐
CCIE-Yasuo1 小时前
网络安全-学习web开发-列表、标签
前端·学习·web安全
小大宇1 小时前
Vue知识点-ElementPlus-06 单选+多选+下拉+日期选择
前端·vue.js·elementui
用户11481867894841 小时前
Nuxt 3 学习版 Demo:跟着做一遍,从跑起来到自己会改
前端
hiahiahia1232 小时前
Streaming Model Output
开发语言·前端
paopaokaka_luck2 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts
栀椩2 小时前
Electron 内嵌页面跨域问题(CORS/PNA)解决全记录
前端·javascript·electron
asaotomo2 小时前
截图识题、AI 讲解、笔记沉淀:Chrome 扩展体验
前端·chrome·笔记
前端架构师-老李2 小时前
HTML与CSS基础第五课—HTML的空格、换行、横线相关知识
前端·css·html
SEO_juper2 小时前
Chrome 扩展一键查看当前页面 SEO 信息:不用切页面,点一下全出来
前端·javascript·chrome
Nymph_Zhu2 小时前
vue3+element-plus 文件上传
前端·typescript·vue3·element-plus