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]
相关推荐
Surmon1 小时前
彻底搞懂大模型 Temperature、Top-p、Top-k 的区别!
前端·人工智能
木斯佳3 小时前
前端八股文面经大全:bilibili生态技术方向二面 (2026-03-25)·面经深度解析
前端·ai·ssd·sse·rag
不会写DN3 小时前
Gin 日志体系详解
前端·javascript·gin
冬夜戏雪3 小时前
实习面经记录(十)
java·前端·javascript
爱学习的程序媛5 小时前
【Web前端】JavaScript设计模式全解析
前端·javascript·设计模式·web
小码哥_常5 小时前
从SharedPreferences到DataStore:Android存储进化之路
前端
老黑5 小时前
开源工具 AIDA:给 AI 辅助开发加一个数据采集层,让 AI 从错误中自动学习(Glama 3A 认证)
前端·react.js·ai·nodejs·cursor·vibe coding·claude code
jessecyj5 小时前
Spring boot整合quartz方法
java·前端·spring boot
苦瓜小生6 小时前
【前端】|【js手撕】经典高频面试题:手写实现function.call、apply、bind
java·前端·javascript
天若有情6736 小时前
前端HTML精讲03:页面性能优化+懒加载,搞定首屏加速
前端·性能优化·html