当前位置: 首页 > news >正文

打卡第7天-----哈希表

继续坚持✊,我现在看到leetcode上的题不再没有思路了,真的是思路决定出路,在做题之前一定要把思路梳理清楚。

一、四数相加

leetcode题目编号:第454题.四数相加II

题目描述:

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。

时间复杂度为n^2,用map来解决,看一下JS代码如下: 

/*** @param {number[]} nums1* @param {number[]} nums2* @param {number[]} nums3* @param {number[]} nums4* @return {number}*/var fourSumCount = function(nums1, nums2, nums3, nums4) {const map1 = new Map()let count = 0;for (let i = 0; i < nums1.length; i++) {for (let j = 0; j < nums2.length; j++) {const n = nums1[i] + nums2[j];map1.set(n, (map1.get(n) || 0) + 1);}}for (let i = 0; i < nums3.length; i++) {for (let j = 0; j < nums4.length; j++) {const target = 0 - (nums3[i] + nums4[j]);if (map1.has(target)) {count += map1.get(target);}}}return count;};
二、赎金信

leetcode题目编号:383. 赎金信

题目描述:

给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。

思路是:

用数组去解决,这样子比较方便快捷

/*** @param {string} ransomNote* @param {string} magazine* @return {boolean}*/
var canConstruct = function(ransomNote, magazine) {const strArr = new Array(26).fill(0);const base = 'a'.charCodeAt();for(const s of magazine) {// 记录magazine里面各字符串出现的次数strArr[s.charCodeAt() - base]++;}// 对应的字符做减减的操作for (const t of ransomNote) {let index = t.charCodeAt() - base;// 如果没有记录过直接返回falseif (!strArr[index]) {return false}strArr[index]--;}return true;};
三、三数之和

leetcode题目编号:第15题. 三数之和

题目描述:

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。

遍历、对象指针,两个互相结合,就能找出最终的答案了。

看一下JS代码:

/*** @param {number[]} nums* @return {number[][]}*/var threeSum = function(pNums) {const result = []const nums = pNums.sort((a, b) => a - b)// console.log(n);for (let i = 0; i < nums.length; i++) {// 数组排过序,如果第一个数大于0直接返回resif (nums[i] > 0) return result;// 去重if (i > 0 && nums[i] === nums[i - 1]) continue;let left = i + 1;let right = nums.length - 1;while(right > left) {const threeSum = nums[i] + nums[left] + nums[right]if (threeSum > 0) {right--;} else if (threeSum < 0) {left++;} else {result.push([nums[i], nums[left], nums[right]])// 去重while(left < right && nums[left] == nums[left + 1]){left++}while(left < right && nums[right] == nums[right - 1]) {right--}left++right--}}}return result;};
四、四数之和

leetcode题目编号:

题目描述:

题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。

剪枝操作要加条件限制,来看一下JS代码:

/*** @param {number[]} nums* @param {number} target* @return {number[][]}*/var fourSum = function(nums, target) {const len = nums.length;if(len < 4) return [];nums.sort((a, b) => a - b);const res = [];for(let i = 0; i < len - 3; i++) {// 去重iif(i > 0 && nums[i] === nums[i - 1]) continue;for(let j = i + 1; j < len - 2; j++) {// 去重jif(j > i + 1 && nums[j] === nums[j - 1]) continue;let l = j + 1, r = len - 1;while(l < r) {const sum = nums[i] + nums[j] + nums[l] + nums[r];if(sum < target) { l++; continue}if(sum > target) { r--; continue}res.push([nums[i], nums[j], nums[l], nums[r]]);// 对nums[left]和nums[right]去重while(l < r && nums[l] === nums[++l]);while(l < r && nums[r] === nums[--r]);}}}return res;};

相关文章:

打卡第7天-----哈希表

继续坚持✊&#xff0c;我现在看到leetcode上的题不再没有思路了&#xff0c;真的是思路决定出路&#xff0c;在做题之前一定要把思路梳理清楚。 一、四数相加 leetcode题目编号&#xff1a;第454题.四数相加II 题目描述&#xff1a; 给定四个包含整数的数组列表 A , B , C , …...

【Linux】WEB网站网络防火墙(WAF软件)Fail2ban:保护服务器免受恶意攻击的必备工具

随着互联网的迅速发展&#xff0c;服务器的安全性日益成为用户和管理员关注的焦点。恶意攻击者不断寻找机会侵入服务器&#xff0c;窃取敏感信息、破坏数据或者滥用系统资源。为了抵御这些威胁&#xff0c;许多安全工具应运而生&#xff0c;其中一款备受推崇的工具就是 Fail2ba…...

妙笔生词智能写歌词软件:创新助力还是艺术之殇?

在音乐创作日益普及和多样化的当下&#xff0c;各种辅助工具层出不穷&#xff0c;妙笔生词智能写歌词软件便是其中之一。那么&#xff0c;它到底表现如何呢&#xff1f; 妙笔生词智能写歌词软件&#xff08;veve522&#xff09;的突出优点在于其便捷性和高效性。对于那些灵感稍…...

力扣hot100-普通数组

文章目录 题目&#xff1a;最大子数组和方法1 动态规划方法2 题目&#xff1a;合并区间题解 题目&#xff1a;轮转数组方法1-使用额外的数组方法2-三次反转数组 题目&#xff1a;除自身以外数组的乘积方法1-用到了除法方法2-前后缀乘积法 题目&#xff1a;最大子数组和 原题链…...

深入浅出Transformer:大语言模型的核心技术

引言 随着自然语言处理&#xff08;NLP&#xff09;领域的不断发展&#xff0c;Transformer模型逐渐成为现代大语言模型的核心技术。无论是BERT、GPT系列&#xff0c;还是最近的T5和Transformer-XL&#xff0c;这些模型的背后都离不开Transformer架构。本文将详细介绍Transfor…...

MacOS隐藏文件打开指南

MacOS隐藏文件打开指南 方法一&#xff1a; 直接按下键盘上的【commandshift.】,这时候就可以在mac系统中就会自动显示隐藏的文件夹了 方法二&#xff1a; 在终端查看 ls -la...

grafana数据展示

目录 一、安装步骤 二、如何添加喜欢的界面 三、自动添加注册客户端主机 一、安装步骤 启动成功后 可以查看端口3000是否启动 如果启动了就在浏览器输入IP地址&#xff1a;3000 账号密码默认是admin 然后点击 log in 第一次会让你修改密码 根据自定义密码然后就能登录到界面…...

53-4 内网代理6 - frp搭建三层代理

前提:53-3 内网代理5 - frp搭建二级代理-CSDN博客 三级网络代理 在办公区入侵后,发现需要进一步渗透核心区网络(192.168.60.0/24),并登录域控制器的远程桌面。使用FRP在EDMZ区、办公区与核心区之间建立三级网络的SOCKS5代理,以便访问核心区的域控制器。 VPS上的FRP服…...

SQLite 命令行客户端 + HTA 实现简易UI

SQLite 命令行客户端 HTA 实现简易UI SQLite 客户端.hta目录结构参考资料 仅用于探索可行性&#xff0c;就只实现了 SELECT。 SQLite 客户端.hta <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; cha…...

TikTok小店推出“百万英镑俱乐部”,实力宠卖家!

TikTok Shop近期在英国市场重磅推出了“百万英镑俱乐部”激励计划&#xff0c;这一举措旨在通过一系列诱人福利&#xff0c;助力商家在TikTok平台上实现销售飞跃。该计划不仅彰显了TikTok Shop对于商家成长的深切关怀&#xff0c;更以实际行动诠释了“实力宠卖家”的承诺。 我…...

路径规划 | 基于蚁群算法的三维无人机航迹规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 基于蚁群算法的三维无人机航迹规划&#xff08;Matlab&#xff09;。 蚁群算法&#xff08;Ant Colony Optimization&#xff0c;ACO&#xff09;是一种模拟蚂蚁觅食行为的启发式算法。该算法通过模拟蚂蚁在寻找食物时…...

.Net C#执行JavaScript脚本

文章目录 前言一、安装二、执行 JavaScript 脚本三、与脚本交互四、JS 调用 C# 方法五、多线程使用总结 前言 ClearScript 是一个 .NET 平台下的开源库&#xff0c;用于在 C# 和其他 .NET 语言中执行脚本代码。它提供了一种方便和安全的方法来将脚本与应用程序集成&#xff0c;…...

企业应对策略:全面防御.DevicData-P-xxxxxx勒索病毒

引言 在数字化时代&#xff0c;网络安全已成为不可忽视的重要议题。随着互联网的普及&#xff0c;各种网络威胁层出不穷&#xff0c;其中勒索病毒以其独特的攻击方式和巨大的破坏性&#xff0c;给个人用户和企业带来了严重的经济损失和数据安全风险。在众多勒索病毒中&#xff…...

记一次mysql导出到达梦数据库

DM8管理工具 DM管理工具&#xff08;官方&#xff09;DBeaver - jdbc驱动 MySql迁移到DM8 使用官方DM数据迁移工具 新建迁移工程选择MySQL>DM填写mysql连接信息、添加dm连接信息执行 DM8数据脚本制作过程 使用DM管理工具 导出全部&#xff1a;进入对应模式>表>选…...

2024年高压电工证考试题库及高压电工试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年高压电工证考试题库及高压电工试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的高压…...

完美解决ImportError: cannot import name ‘idnadata‘的正确解决方法,亲测有效!!!

完美解决ImportError: cannot import name idnadata’的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决ImportError: cannot import name idnadata的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01;报错问题…...

完美解决windows开机时,系统提示此windows副本不是正版的正确解决方法,亲测有效!!!

完美解决windows开机时&#xff0c;系统提示此windows副本不是正版的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决windows开机时&#xff0c;系统提示此windows副本不是正版的正确解决方法&#xff0c;亲测有效&#xff01;&#…...

树莓派采集系统

树莓派&#xff08;Raspberry Pi&#xff09;是一款非常受欢迎的小型单板计算机&#xff0c;因其低成本、低功耗以及丰富的I/O接口&#xff0c;非常适合用来搭建数据采集系统。无论是环境监测、智能家居、工业自动化&#xff0c;还是科学实验&#xff0c;树莓派都能胜任。以下是…...

ListView

效果图 1、在activity_main.xml中创建ListView&#xff0c;再创建list_item.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match…...

gptoolbox matlab工具箱cmake 调试笔记

一、问题描述 起因&#xff1a;在matlab中运行Offset surface of triangle mesh in matlab的时候报错&#xff1a; 不支持将脚本 signed_distance 作为函数执行: E:\MATLAB_File\gptoolbox\mex\signed_distance.m> 出错 offset_bunny (第 22 行) D signed_distance(BC,V,F…...

Redux-Thunk单元测试终极指南:如何高效Mock异步操作

Redux-Thunk单元测试终极指南&#xff1a;如何高效Mock异步操作 【免费下载链接】redux-thunk reduxjs/redux-thunk: Redux-Thunk 是一个用于 Redux 的中间件&#xff0c;可以用于处理异步操作和副作用&#xff0c;支持多种异步操作和副作用&#xff0c;如 AJAX&#xff0c;Web…...

3秒守护隐私:Boss-Key重新定义窗口智能管理

3秒守护隐私&#xff1a;Boss-Key重新定义窗口智能管理 【免费下载链接】Boss-Key 老板来了&#xff1f;快用Boss-Key老板键一键隐藏静音当前窗口&#xff01;上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在数字化办公环境中&#xff0c;窗…...

保姆级教程:用唯创知音WT588F02B语音芯片,从录音到烧录完整走一遍

零基础实战&#xff1a;WT588F02B语音芯片从录音到播放全流程解析 第一次接触语音芯片开发时&#xff0c;我被WT588F02B的易用性惊艳到了——不需要复杂的编程&#xff0c;只需准备好音频文件就能实现语音播放功能。但实际操作中&#xff0c;从录音到最终烧录成功&#xff0c;每…...

嵌入式工程师必看:手把手教你排查PHY芯片挂载失败的6个硬件坑(附示波器实测图)

嵌入式工程师必看&#xff1a;手把手教你排查PHY芯片挂载失败的6个硬件坑&#xff08;附示波器实测图&#xff09; 调试一块新设计的PCB板时&#xff0c;最让人头疼的莫过于网口无法正常工作。作为一名嵌入式工程师&#xff0c;我经历过太多次PHY芯片无法被系统识别的窘境——那…...

为什么92%的Python低代码平台不敢暴露内核?:深度解析GIL绕过策略、上下文感知缓存与热重载原子切换机制

第一章&#xff1a;Python低代码平台内核不透明的产业困局在当前企业数字化加速落地的背景下&#xff0c;Python生态衍生出大量低代码平台&#xff08;如Streamlit Cloud、Gradio Spaces、Dash Enterprise&#xff09;&#xff0c;它们以“拖拉拽少量Python脚本”为卖点&#x…...

彩灯广告屏PLC控制S7-200程序:包含后发送产品梯形图、接线图原理图及IO分配与组态画面详解

彩灯广告屏的PLC控制S7-200程序 程序 我们主要的后发送的产品有&#xff0c;带解释的梯形图接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面上周刚帮客户搞定了一套户外彩灯广告屏的PLC控制项目&#xff0c;用的还是经典的S7-200&#xff0c;本来以为老架构玩不出花…...

【STM32HAL库实战】DAC精准输出0-3.3V可调电压与ADC自检闭环

1. DAC与ADC的基础原理 在嵌入式系统中&#xff0c;数字信号和模拟信号的相互转换是常见需求。STM32微控制器内置了DAC&#xff08;数字模拟转换器&#xff09;和ADC&#xff08;模拟数字转换器&#xff09;模块&#xff0c;让我们能够轻松实现这种转换。 DAC的作用是将数字量转…...

Graphviz自动排版太随机?教你5个技巧精准控制节点位置

Graphviz自动排版太随机&#xff1f;5个专业技巧精准控制节点位置 当你用Graphviz绘制关系图时&#xff0c;是否遇到过这样的困扰&#xff1a;明明代码逻辑清晰&#xff0c;生成的图表却总是不按预期排列&#xff1f;节点位置随机跳跃&#xff0c;关键元素错位&#xff0c;甚至…...

CLAP Zero-Shot Audio Classification Dashboard部署教程:HTTPS反向代理配置(Nginx)保障生产环境访问安全

CLAP Zero-Shot Audio Classification Dashboard部署教程&#xff1a;HTTPS反向代理配置&#xff08;Nginx&#xff09;保障生产环境访问安全 1. 为什么需要HTTPS反向代理 当你成功部署了CLAP音频分类应用后&#xff0c;可能会发现直接通过HTTP访问存在一些安全问题。在生产环…...

Apache Arrow Rust社区与生态:参与开源项目的最佳路径

Apache Arrow Rust社区与生态&#xff1a;参与开源项目的最佳路径 【免费下载链接】arrow-rs Apache Arrow Rust: 一个Rust语言实现的Apache Arrow数据交换格式&#xff0c;可用于高效地在不同计算引擎之间传输和操作大规模数据。它支持多种数据类型和编码方式&#xff0c;并提…...