IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> JavaScript算法题总结(五)哈希 -> 正文阅读

[数据结构与算法]JavaScript算法题总结(五)哈希

BM50 两数之和

在这里插入图片描述

/**
  * 
  * @param numbers int整型一维数组 
  * @param target int整型 
  * @return int整型一维数组
  */
function twoSum( numbers ,  target ) {
   const ans=new Array(2)
   let map=new Map();
    let n=numbers.length;
    for(let i=0;i<n;i++){
//         遍历一波 
//         看看map里面有没有与该值相加等于target的值 如果没有就把该值放到map里
        if(map.has(target-numbers[i])){
            ans[0]=map.get(target-numbers[i])+1;
            ans[1]=i+1;
            break
        }else{
            map.set(numbers[i],i)
        }
    }
    return ans
}
module.exports = {
    twoSum : twoSum
};

BM51 数组中出现次数超过一半的数字

在这里插入图片描述

function MoreThanHalfNum_Solution(numbers)
{
    // write code here
    let map=new Map(),count;
    for(let i=0;i<numbers.length;i++){
        count=map.get(numbers[i])||0;
        map.set(numbers[i],count+1);
    }
    for(let i=0;i<numbers.length;i++){
        if(map.get(numbers[i])>numbers.length/2){
            return numbers[i];
        }
    }
}
module.exports = {
    MoreThanHalfNum_Solution : MoreThanHalfNum_Solution
};

BM52 数组中只出现一次的两个数字

在这里插入图片描述

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param array int整型一维数组 
 * @return int整型一维数组
 */
function FindNumsAppearOnce( array ) {
    // write code here
    let set=new Set();
    array=array.sort((a,b)=>(a-b))
    for(let i=0;i<array.length;i++){
        if(!set.has(array[i])){
            set.add(array[i]);
        }else{
            set.delete(array[i]);
        }
    }
   return [...set]
}
module.exports = {
    FindNumsAppearOnce : FindNumsAppearOnce
};

BM53 缺失的第一个正整数

在这里插入图片描述

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @return int整型
 */
                
function minNumberDisappeared( nums ) {
  //结果要么是1-n  要么是n+1
  let set = new Set();
  nums.forEach(item=>set.add(item));
  
    //从1开始 
  for(let i=1; i<=nums.length; i++){
    if(!set.has(i))
      return i;
  }
  return nums.length+1;
}
module.exports = {
    minNumberDisappeared : minNumberDisappeared
};

module.exports = {
    minNumberDisappeared : minNumberDisappeared
};

BM54 三数之和

在这里插入图片描述

var threeSum = function(nums) {
    // 对数组进行排序,如果nums[i]只要大于0。后面的数字都是大于0,就不存在三个数之和等于0的情况,帮助我们去重。
    nums.sort((a, b) => {
        return a - b;
    })
    let result = [];
    for(let i = 0; i < nums.length; i++) {
        // 固定nums[i]的值 查找是否有其他两个数字之和加上nums[i]等于0的
        if (nums[i] > 0) {
            return result;
        }
        // 跳过重复的值
        if (i != 0 && nums[i] === nums[i - 1]) {
            continue;
        }
        let left = i + 1;
        let right = nums.length - 1;
        // 利用此时的nums[i],去找值符合的的其他两个数字
        while(left < right) {
            let sum = nums[i] + nums[left] + nums[right];
            if (sum == 0) {
                // 找到了符合条件的数字
                result.push([nums[i], nums[left], nums[right]]);
                // 已经找到符合条件的结果了,此时的left指针和right指针应该移动一个位置
                left++;
                right--;
                // 去重操作
                while(nums[left] === nums[left - 1]) {
                    left++;
                }
                while(nums[right] === nums[right + 1]) {
                    right--;
                }
            }
            if (sum > 0) {
                right--;
            }
            if(sum < 0) {
                left++;
            }
        }
    }
    return result;
};
module.exports = {
    threeSum : threeSum
};


  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:26:43  更:2022-05-16 11:26:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:58:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码