代码随想录第七天打卡|454.四数相加II, 383. 赎金信 ,15. 三数之和 , 18. 四数之和

454.四数相加II

Python

class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:n=len(nums1)res=0Map=defaultdict(int)for i in range(n):for j in range(n):Map[nums1[i]+nums2[j]]+=1for i in range(n):for j in range(n):if Map[-(nums3[i]+nums4[j])]>0:res+=Map[-(nums3[i]+nums4[j])]return res

C++

class Solution {
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {int n=nums1.size();unordered_map<int,int> mp;for (int i=0;i<n;i++){for (int j=0;j<n;j++){mp[nums1[i]+nums2[j]]++;}}int res=0;for (int i=0;i<n;i++){for (int j=0;j<n;j++){if (mp[-(nums3[i]+nums4[j])]>0){res+=mp[-(nums3[i]+nums4[j])];}}}return res;}
};

383. 赎金信

C++

class Solution {
public:bool canConstruct(string ransomNote, string magazine) {unordered_map<char,int> mp;for (auto s:magazine)mp[s]++;for (char s:ransomNote){if (mp[s]>0){mp[s]--;}else return false;}    return true;}
};

Python

class Solution:def canConstruct(self, ransomNote: str, magazine: str) -> bool:Map=defaultdict(int)for s in magazine:Map[s]+=1for s in ransomNote:if Map[s]>0:Map[s]-=1else:return Falsereturn True

15. 三数之和

Python

class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:nums.sort()if nums[0]>0:return []res=[]for i in range(len(nums)-2):left=i+1right=len(nums)-1if i>0 and nums[i]==nums[i-1]:  continuewhile left<right:if nums[i]+nums[left]+nums[right]>0:right-=1elif nums[i]+nums[left]+nums[right]<0:left+=1else:res.append([nums[i],nums[left],nums[right]])while left<right and nums[right]==nums[right-1]:right-=1while left<right and nums[left]==nums[left+1]:left+=1left+=1right-=1return res

C++

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;sort(nums.begin(),nums.end());if (nums[0]>0){return res;}int left=0,right=nums.size();for (int i=0;i<nums.size()-2;i++){if (i>0 && nums[i]==nums[i-1])continue;int left=i+1,right=nums.size()-1;while (left<right){if (nums[i]+nums[left]+nums[right]>0)right--;else if (nums[i]+nums[left]+nums[right]<0)left++;else {res.push_back(vector<int>{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 res;}
};

18. 四数之和

Python

class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:nums.sort()res=[]for i in range(len(nums)-3):if i>0 and nums[i]==nums[i-1]:continuefor j in range(i+1,len(nums)-2):if j-1>i and nums[j]==nums[j-1]:continueleft,right=j+1,len(nums)-1get=target-nums[i]-nums[j]while left<right:if nums[left]+nums[right]>get:right-=1elif nums[left]+nums[right]<get:left+=1else:res.append([nums[i],nums[j],nums[left],nums[right]])while left<right and nums[left]==nums[left+1]:left+=1while left<right and nums[right]==nums[right-1]:right-=1left+=1right-=1  return res      

C++

class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {sort(nums.begin(),nums.end());vector<vector<int>>res;if (nums.size()<4)return res;for (int i=0;i<nums.size()-3;i++){if (i>0 && nums[i]==nums[i-1])continue;for (int j=i+1;j<nums.size()-2;j++){if (j>i+1 && nums[j]==nums[j-1])continue;int left=j+1,right=nums.size()-1;while (left<right){if ((long)nums[left]+nums[right]+nums[i]+nums[j]>target)right--;else if ((long)nums[left]+nums[right]+nums[i]+nums[j]<target)left++;else{res.push_back(vector<int>{nums[left],nums[right],nums[i],nums[j]});while (left<right && nums[left]==nums[left+1])left++;while (left<right && nums[right]==nums[right-1])right--;left++;right--;}}}}return res;}
};

总结

这道题的要求可以用四个相同的指针,每个指针不能指向同一个值且相对位置必须是相同的,每个指针遍历的数不能有相同的,来表示。忘记了,三刷用map来试试。

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

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

相关文章

第十三篇:智慧之网:深度探索关系型数据库的数学奥秘与实战技艺

智慧之网&#xff1a;深度探索关系型数据库的数学奥秘与实战技艺 1. 引言 1.1 数据时代的基石 在数字化的浪潮中&#xff0c;数据已成为新时代的石油&#xff0c;而关系型数据库则是这座数据矿藏的精炼厂。自E.F. Codd在1970年提出关系模型以来&#xff0c;关系型数据库以其坚…

Flink CDC 原理

简介 Flink CDC&#xff08;Change Data Capture&#xff09;是 Apache Flink 提供的一个变更数据捕获工具集。它可以监控数据库的变更&#xff0c;并将这些变更实时地以流的形式提供给下游系统&#xff0c;这些变更包括插入、更新和删除操作。 Flink CDC 适用于需要实时数据…

(Arcgis)python geopandas库分割shp属性表特定内容,批量导出shp文件

一、两个文件。实现目标&#xff1a;从1个shp文件&#xff0c;根据属性表内容提取成200个shp文件&#xff0c;文件名取自txt文本内容 shp文件&#xff08;要素1-200.shp&#xff09;&#xff1a;打开属性表前14项相同&#xff0c;后200项不相同。 ————任务目标&#xff1a…

【yolov8分类任务-全流程】【公开数据白内障-101:101例白内障手术的视频数据集】

文章目录 1.公开数据集1.1.白内障-101&#xff1a;数据集文件结构1.1.1.视频文件1.1.2.注释文件(1)videos.csv(2) phases.csv(3)annotations.csv 1.2. 数据处理1.2.1.抽帧脚本全部代码&#xff08;每行都有注释&#xff09;1.2.2.分类任务划分数据集脚本 2.yolov8分类任务训练2…

代码技巧: 类中同一个函数可以同时存在常函数版本和普通函数版本(c++)

在类中如果我们希望在常函数中修改某属性的值可以使用mutable来实现。 如果有下面的场景&#xff0c;假设我们有一个函数hobby()需要在非const的对象调用的时候&#xff0c;应该去修改内部的属性&#xff0c;在const修饰的对象调用的时候可以满足不修改内部的属性。 鉴于上面的…

effective python学习笔记_列表与字典

学习对序列做切片 实现了__getitem__类即可支持切片&#xff0c;实现了__setitem__类可支持切片赋值 切片时下标索引可以越界&#xff0c;但按下标访问元素不可以越界&#xff0c;会IndexError 可以通过切片赋值不相等数量元素实现元素添加或赋值 切片不建议同时提供起始下…

【Shell】Shell编程之函数

目录 1.Shell函数定义 2.Shell函数的作用 3.函数返回值 4.函数传参 5.函数变量的作用范围 案例 1.Shell函数定义 格式1 function 函数名 { 命令序列 } 格式2 函数名() { 命令序列 } 2.Shell函数的作用 使用函数可以避免代码重复 使用函数可以将大的工程分割为若…

2024OD机试卷-素数之积 (java\python\c++)

题目:素数之积 题目描述 RSA加密算法 在网络安全世界中无处不在,它利用了极大整数因数分解的困难度,数据越大,安全系数越高,给定一个 32 位正整数,请对其进行因数分解,找出是哪两个素数的乘积。 输入描述 一个正整数 num 0 < num < 2147483647 输出描述 如果…

供水设备数据采集

随着城市化进程的加快&#xff0c;供水系统作为城市基础设施的重要组成部分&#xff0c;其运行效率和稳定性直接关系到市民的日常生活。在这个信息化、智能化的时代&#xff0c;如何利用先进技术提升供水系统的管理水平&#xff0c;成为了摆在我们面前的重要课题。HiWoo Cloud平…

java+jsp+sql server 医院住院管理系统论文(二)

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ ➡️点击免费下载全套资料:源码、数据库、部署教程、论文、答辩ppt一条龙服务 ➡️有部署问题可私信联系 ⬆️⬆️⬆️​​​​​​​⬆️…

vue+cesium项目demo

使用turf时在index.html中引用 <!-- 使用unpkg --> <script src"https://unpkg.com/turf/turf/turf.min.js"></script> <template><div class"cesium_box" id"cesiumContatiner"></div><button class&q…

【保姆级教程】VMware Workstation Pro的虚拟机导入vritualbox详细教程

解决方案 1、OVF格式2、VMX格式 1、OVF格式 选定需要导出的虚拟机&#xff08;关闭或者挂起状态下&#xff09;依次选择文件-导出为ovf 在Vritualbox导入刚刚导出的.ovf文件 更改路径&#xff0c;按实际需要修改 成功导入 2、VMX格式 如果在VMware Workstation Pro导出的…

Vue实战技巧 —— 企业开发实战中的常见疑难问题

Vue企业开发实战中的常见疑难问题 1. 解决Vue动态路由参数变化&#xff0c;页面数据不更新2. vue组件里定时器销毁问题3. vue实现按需加载组件的两种方式4. 组件之间&#xff0c;父子组件之间的通信方案5. Vue中获取当前父元素&#xff0c;子元素&#xff0c;兄弟元素6. 开发环…

安卓手机APP开发__支持不同的语言和文化

安卓手机APP开发__支持不同的语言和文化 目录 概述 创建本地的目录和资源文件 在你的app中使用资源 结构化消息中的文本 概述 APP包括了能被指定为一种特定的文件的资源。例如&#xff0c;一个APP能够包括 特定的文件的字符串&#xff0c;这个字符串能被翻译为本地的语言…

pg数据库的热备

Pg数据库主从复制 ​ 前言&#xff1a;公司的一台服务器因为断电导致系统损坏&#xff0c;经过3天的抢修&#xff0c;将服务器和数据恢复。为了避免数据的丢失&#xff0c;先将数据备份&#xff0c;并进行高可用。 ​ 采用技术&#xff1a;keepalivedpg ​ 后期并实现zabbix…

传说中的运维门户设计

在IT服务管理这片广阔天地中&#xff0c;运维门户如同一位技艺高超的魔术师&#xff0c;轻轻一挥手&#xff0c;便将纷繁复杂的运维世界化繁为简&#xff0c;编织成一张便捷高效、触手可及的网络。它不仅是ITSM系统中不可或缺的一环&#xff0c;更是连接用户与技术世界的桥梁&a…

Spring WebFlux:响应式编程

在软件开发领域&#xff0c;随着互联网应用的规模和复杂性不断增加&#xff0c;传统的编程模型逐渐暴露出一些局限性&#xff0c;尤其是在面对高并发、大规模数据流处理等场景时。为了应对这些挑战&#xff0c;响应式编程&#xff08;Reactive Programming&#xff09;应运而生…

Java字符串去除空格的方法

前言 在Java编程实践中&#xff0c;处理字符串中的空格是一项基本且频繁的操作。本文将深入探讨如何使用Java原生方法以及Apache Commons Lang库中的StringUtils类&#xff0c;全方位解决字符串去空格的需求&#xff0c;让你的代码更加健壮和高效。 1. Java原生方法 a. trim…

电商核心技术揭秘56:客户关系管理与忠诚度提升

相关系列文章 电商技术揭秘相关系列文章合集&#xff08;1&#xff09; 电商技术揭秘相关系列文章合集&#xff08;2&#xff09; 电商技术揭秘相关系列文章合集&#xff08;3&#xff09; 文章目录 引言客户关系管理&#xff08;CRM&#xff09;的重要性提升顾客体验数据驱…

AWS之云种类与云服务模式

云种类分为3种&#xff1a; 公有云&#xff1a;任何个人或者企业都可以通过注册的方式直接使用的云。&#xff08;特点&#xff1a;使用简单&#xff1b;通过web界面快速购买。缺点&#xff1a;安全性低&#xff1b;使用资源是与其他用户共享。&#xff09; 私有云&#xff1…