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]
相关推荐
往事随风灬12 小时前
我被 Volta 的“智能”坑了一下午:pnpm 为何无视项目 Node 版本?
前端·vue.js
xiaofeichaichai12 小时前
Tree Shaking
前端·javascript
lichenyang45312 小时前
给 ArkTS 应用做一个内置的「Network 面板」:实时看清 SSE 每一帧和最后那张卡片
前端
倾颜12 小时前
从手写 Runner 到 LangGraph:受控 Agent 接入 LangGraph
前端·后端·langchain
UXbot12 小时前
AI网页开发工具能替代工具吗?5大平台对比
前端·人工智能·低代码·ui·原型模式·web app
wuhen_n12 小时前
从零到一!前端搭建本地轻量化 RAG 问答系统
前端·langchain·ai编程
落日漫游12 小时前
代码报错难排查?借助Gemini快速修复
前端
niconicoC12 小时前
让 Three.js 场景更真实:我用高斯泼溅和 SparkJS 做了一个可交互的 3D Demo
前端·webgl
Darling噜啦啦12 小时前
JavaScript 数组深度解析:从纯函数到二维数组陷阱,一文吃透前端数据结构核心
前端·javascript·数据结构
万少12 小时前
一封邮件,让我重新打开了搁置半年的鸿蒙应用
前端·javascript·后端