代码随想录算法训练营第七天(一)| 454.四数相加II 383. 赎金信

news2025/4/7 8:40:04

454.四数相加II

题目:

给你四个整数数组 nums1nums2nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:

  • 0 <= i, j, k, l < n
  • nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0

示例 1:

输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]
输出:2
解释:
两个元组如下:
1. (0, 0, 0, 1) -> nums1[0] + nums2[0] + nums3[0] + nums4[1] = 1 + (-2) + (-1) + 2 = 0
2. (1, 1, 0, 0) -> nums1[1] + nums2[1] + nums3[0] + nums4[0] = 2 + (-1) + (-1) + 0 = 0

示例 2:

输入:nums1 = [0], nums2 = [0], nums3 = [0], nums4 = [0]
输出:1

思路:

这是一道比较经典的哈希算法题,首先分析题目,题目给了我们四个数组,要求我们每个数组中找出一个元素构成四元组,相加为0;我们要求做的就是找到一共有多少个满足的四元组,返回满足的四元组个数。

另外,值得注意的一点是,我们不需要对元素相同的四元组进行去重,因为它们来自不同数组的不同位置。

那我们可以两两数组遍历,求出它们的和,然后分别放在两个新数组里面,如果加和能为0,在统计一下个数,就可以了。

上代码!

class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {

        unordered_map<int, int> umap; 
        
        // 遍历前两个数组,将两个数组元素之和以及出现的次数放到map中
        for (int a : nums1) {
            for (int b : nums2) {
                umap[a + b]++;
            }
        }
        int count = 0; 
        // 再遍历后两个数组
        for (int c : nums3) {
            for (int d : nums4) {
                if (umap.find(0 - (c + d)) != umap.end()) {
                    count += umap[0 - (c + d)];
                }
            }
        }
        return count;



    }
};


383 赎金信

题目:

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。

示例 1:

输入:ransomNote = "a", magazine = "b"
输出:false

示例 2:

输入:ransomNote = "aa", magazine = "ab"
输出:false

示例 3:

输入:ransomNote = "aa", magazine = "aab"
输出:true

思路:

题目告诉我,两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。翻译一下,不就是问magazine里面是不是包含ransomNote。

那么,同样的,哈希表。

同时,有两点非常重要,

1.都是小写字母

2.magazine的字母只能用一次

这一题的思路和有效字母的异位词完全一样

上代码:

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {

        int aa[27] = {0};

        if (ransomNote.size() > magazine.size()) {
            return false;
        }
        for (int i = 0; i < magazine.length(); i++) {

            aa[magazine[i] - 97]++;
        }
        for (int i = 0; i < ransomNote.length(); i++) {

            aa[ransomNote[i] - 97]--;

            if (aa[ransomNote[i] - 97] < 0) {
                return false;
            }
        }
        return true;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Debug小妙招·「1」--使用GDB分析进程Core Dump

使用GDB分析进程Core Dump 目录 Core Dump简介GDB简介生成Core Dump使用GDB分析Core Dump实例分析常见问题与解决方法1. Core Dump简介 什么是Core Dump 当程序崩溃(例如,由于非法内存访问或除零操作)时,操作系统会生成一个文件,称为core dump。这个文件包含了程序在崩溃时…

常见VPS服务器附加组件一览

网络主机行业竞争非常激烈&#xff0c;因此主机服务提供商竭尽全力为客户提供完整的解决方案&#xff0c;其中包含构建和管理在线项目所需的一切。但客户通常有特定需求&#xff0c;因此需要不同的附加组件。在管理自己的网络服务器时尤其如此。 今天&#xff0c;我们将介绍您…

无感陶瓷电阻器-EAK脉冲能量吸收电阻

EAK陶瓷电阻器系列投入批量生产。BA 系列的最大电阻为 1MΩ&#xff0c;电压高达 20kV。 在散装结构中表现出色 EAK 的无感陶瓷电阻器设计用于需要高电压、高能量和高峰值电流电阻器的应用。固有的非感性电阻器是通过本体结构产生的&#xff0c;而不是蜿蜒曲折或转弯产生的。这…

Django内置后端和自定义后端

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 5.2.3 内置…

java学习笔记 day8.6

修改数据 1.修改数据时判断name参数不为空且非空字符串,判断salary是不为空则添加记录 <update id"editStaffItem">update staff<set><if testname!null and name!"">name#{name},</if><if test"salary!null">sa…

LearnOpenGL-光照章节(颜色、基础光照、材质、光照贴图)

LearnOpenGL-光照章节&#xff08;颜色、基础光照、材质、光照贴图&#xff09; 颜色创建一个光照场景 基础光照一、环境光照二、漫反射光照三、镜面反射 材质光照贴图一、漫反射贴图二、镜面光贴图三、放射光贴图 颜色 我们在现实生活中看到某一物体的颜色并不是这个物体真正…

Unity强化工程 之 SpriteShape(精灵地形编辑器)

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正 1.什么是SpriteShape&#xff1f; SpriteShape 是一个灵活且功能强大的世界构建资源&#xff0c;它可以沿着形状的轮廓进…

基于springboot+vue+uniapp的“口腔助手”小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

秒懂C++之deque及反向迭代器

目录 前言 一.deque的常用接口 二.deque的原理 2.1 vector与list的优缺点 2.2 deque的原理 三.反向迭代器 四.全部代码 前言 秒懂C之List-CSDN博客 秒懂C之vector&#xff08;下&#xff09;-CSDN博客 本文后面关于反向迭代器的操作会涉及到前面的文章~ 一.deque的常用接…

WriterSide 文档、接口自动编译并部署到GitPage

WriterSide 自动编译并部署到GitPage 1. GitHub 创建空仓库2. 配置GitHub 仓库的编译部署方式3. WriteSide 创建项目4. 创建自动、编译部署配置文件5. 自动编译、部署1. GitHub 创建空仓库 在 GitHub 创建一个空的仓库 仓库创建成功后, 记录仓库的远程地址 仓库地址需要修改…

弥散制氧机与变压吸附制氧机的差异

在氧气供应领域&#xff0c;弥散制氧机和变压吸附制氧机是常见的两种设备&#xff0c;它们在工作原理、性能特点、应用场景等方面存在着显著的区别。 工作原理&#xff1a; 弥散制氧机是通过富氧膜的渗透作用&#xff0c;将空气中的氧气分离并富集&#xff0c;从而提供一定浓度…

计算机的错误计算(五十四)

摘要 回复网友关于正确计算计算机的错误计算&#xff08;五十一&#xff09;与&#xff08;五十二&#xff09;中所述案例时的 3点注意事项。 问&#xff1a;对于计算机的错误计算&#xff08;五十一&#xff09;中的案例 &#xff0c;由&#xff08;五十二&#xff09;知&a…

中国云计算技术(二)

目录 三、国产大数据库技术&#xff08;一&#xff09;阿里巴巴OceanBase&#xff08;二&#xff09;云创存储数据立方&#xff08;DataCube&#xff09; 三、国产大数据库技术 &#xff08;一&#xff09;阿里巴巴OceanBase OceanBase主要是为了解决淘宝网的大规模数据而产生…

临床数据科学中如何用R来进行缺失值的处理(上)

在临床科研中&#xff0c;由于失访、无应答或记录不清等各种原因&#xff0c;经常会遇到数据缺失的问题。本文将深入探讨医学科研中数据缺失的成因、分类、影响以及应对方法&#xff0c;结合R语言的实际应用&#xff0c;为医学研究人员提供全面的解决方案。 一、认识缺失数据 …

Python酷库之旅-第三方库Pandas(070)

目录 一、用法精讲 281、pandas.Series.dt.daysinmonth属性 281-1、语法 281-2、参数 281-3、功能 281-4、返回值 281-5、说明 281-6、用法 281-6-1、数据准备 281-6-2、代码示例 281-6-3、结果输出 282、pandas.Series.dt.tz属性 282-1、语法 282-2、参数 282-…

AndroidStudio 两种Debug模式

第一种&#xff1a;直接运行Debug 第二种&#xff1a;运行 attach debugger to android process 优缺点&#xff1a; 第一种是需要把整个工程运行起来&#xff0c;耗时&#xff0c; 第二种是触发式调试&#xff0c;在出错的情况下&#xff0c;经过判断在出错的地方&#xff0c;…

Leetcode75-6 反转字符串中的单词

思路 1. 先把全部字符串反转 然后按空格分割字符串 最后输出即可 有一个问题就是 多个空格的情况 需要用正则表达式 参考文章【JAVA学习之字符串分割空格】_如何将字符串用不确定的空格分开-CSDN博客 分割多个空格时可以需要用到正则表达式。。 正则表达式\s表示匹配任何空白字…

乡村振兴旅游综合体建设方案

1. 乡村振兴旅游综合体概述 乡村振兴旅游综合体建设方案旨在通过现代信息技术的应用&#xff0c;如云计算、物联网、大数据等&#xff0c;实现旅游行业的智慧化升级。该方案涵盖了游客、旅游管理部门、商家等不同角色的需求&#xff0c;以期提升旅游体验&#xff0c;推动乡村振…

OpenCV专栏介绍

在当今人工智能和计算机视觉领域&#xff0c;OpenCV作为一个功能强大的开源库&#xff0c;已经成为实现各种视觉算法的基石。本“OpenCV”专栏致力于帮助读者深入理解并掌握OpenCV的使用&#xff0c;从而在计算机视觉项目中发挥关键作用。 专栏导读 随着技术的不断进步&#…

免费代理池是什么,如何使用代理IP进行网络爬虫?

互联网是一个庞大的数据集合体&#xff0c;网络信息资源丰富且繁杂&#xff0c;想要从中找到自己需要的信息要花费较多的时间。为了解决这个问题&#xff0c;网络爬虫技术应运而生&#xff0c;它的主要作用就是在海量的互联网信息中进行爬取&#xff0c;抓取有效信息并存储。然…