代码随想录第七天(454、383、15、18)

题目一:四数相加II

链接:

代码随想录

思路:首先用双循环遍历构成a+b的值和出现的次数,用字典接收,由于a+b+c+d=0,因为在对c和d进行双循环后,在字典中找到0-c-d,得出它的值也就是出现次数,进行出现次数的累计,就得到了

有多少个元组 (i, j, k, l) 能满足:

  • 0 <= i, j, k, l < n
  • nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0                     
    class Solution:def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:hashmap =dict()for a in nums1:for b in nums2:hashmap[a+b]=hashmap.get(a+b,0)+1 count = 0for c in nums3:for d in nums4:target = -c-dif target in hashmap:count+=hashmap[target]return count
    题目二:赎金信 
  • 题目链接/文章讲解: 代码随想录

    思路:通过比较赎金信的各个字母出现的次数都要小于等于杂志出现的字母个数来判定,定义数组,用26个字母的unicode次序来确定索引,每个字母出现一次,对应索引次数加1

    class Solution:def canConstruct(self, ransomNote: str, magazine: str) -> bool:ransomNote_count = [0]*26magazine_count = [0]*26for i in ransomNote:ransomNote_count[ord(i)-ord('a')]+=1for i in magazine:magazine_count[ord(i)-ord('a')]+=1return all(ransomNote_count[a]<=magazine_count[a] for a in range(26))
    题目三:三数之和

    思路:

    使用双指针的方法,每遍历一次数组,都是先让左边第一个数作为i,固定,让left往右移动,right往左移动进行遍历,如果sum>0,则让right往左移动,如果sum<0,则让left往右移动;注意点是i和left以及right的去重,

    i的去重:检查第i项以及第i-1项是否相等,如果相等,就跳过

    left 和right的去重:等到往结果result中加入一个元组之后,在考虑去重,只要当前right和往左移动后的下一个right数组对应的值相等,就right减一,left同理

    class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:result = []nums.sort()for i in range(len(nums)):if nums[i]>0:return resultif i>0 and nums[i]==nums[i-1]:continueleft = i+1right = len(nums)-1while left < right:sum_ = nums[i]+nums[left]+nums[right] if sum_ >0:right -=1elif sum_ <0:left +=1else:result.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 +=1right-=1left +=1return result
    题目四:四数之和

    思路:跟三数之和,相比,一是多了一层循环,多了一次去重;二是由于target不确定是否是大于零还是小于零,因此需要进行一级剪枝操作,也就是如果nums[k]大于零,且target大于零,且nums[k]>0,那么就跳出循环;二级剪枝操作,判断nums[k]+nums[i]>target 且target大于零,是的话就跳出循环

    class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:result =[]nums.sort()n = len(nums)for k in range(n):if(nums[k]>target and target >0 and nums[k]>0):breakif(k>0 and nums[k]==nums[k-1]):continuefor i in range(k+1,n):if(nums[k]+nums[i]>target and target >0):breakif(i>k+1 and nums[i]==nums[i-1]):continueleft  = i+1right = n-1while left < right:sum_ = nums[k]+nums[i]+nums[left]+nums[right]if sum_ > target:right -=1elif sum_ < target:left +=1else:result.append([nums[k],nums[i],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 -=1return result   

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

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

相关文章

在浏览器控制台中输出js对象,为什么颜色不同,有深有浅

打开console&#xff0c;输入自定义的javascript对象的时候&#xff0c;打开看发现对象的属性是深紫色&#xff0c;后面有一些对象是浅紫色的&#xff0c;比如Array对象和一堆SVG,HTML,CSS开头的对象&#xff0c;常用的prototype和__proto__也是浅紫色的。 请问这里深紫和浅紫…

【Unity】制作简易计时器

一、创建计时器相关的变量 我们需要创建三个变量&#xff0c;分别是&#xff1a;计时时长、计时剩余时长、是否处于计时状态。 public float duration;//计时时长 public float remain; //计时剩余时长 public bool isCount; //是否处于计时状态 二、初始化变量 我们可以直…

什么是Maven以及如何配置Maven

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 文章目录 1.Maven1.1什么是Maven1.2Maven的好处1.3使用idea创建一个Maven项目1.4Maven的核心功能1.4.1项目构建 1.5Maven仓库1.5.2 中央仓库1.5.3 私有服务器(私服) 1.6Maven设置国内源 1.Mave…

[pytorch]常用函数(自用)

一、公共部分 1、torch.linespace 返回一维张量&#xff0c;在start和end之间&#xff08;包括start也包括end&#xff09;的均匀间隔的steps个点&#xff0c;长度为steps。 print(torch.linspace(1,10,3)) #输出tensor([ 1.0000, 5.5000, 10.0000]) print(torch.linspace…

文本分类--NLP-AI(八)

文本分类任务 任务简介1.字符数值化方式1方式2 2.池化&#xff08;pooling&#xff09;3.全连接层4.归一化函数&#xff08;Sigmoid&#xff09;5.总结 从任务抽象新的技术点Embedding层池化层 任务简介 任务介绍&#xff1a; 字符串分类&#xff0c;根据一句话的含妈量&#…

伊利25届校招24年社招网申入职北森测评题库全攻略!一文通!

伊利校招社招网申测评全攻略&#x1f680; 亲爱的求职小伙伴们&#xff0c;今天我要分享一份伊利校招社招网申测评的全攻略&#xff0c;希望能助你们一臂之力&#xff01; 测评概览 伊利的网申测评分为六个部分&#xff0c;总共约60分钟的答题时间&#xff0c;涵盖了言语逻辑、…

避免 WebSocket 连接被拒绝

一、检查服务器配置和权限 (一)确认服务器访问权限 确保您的客户端有访问服务器的合法权限。如果服务器设置了访问控制列表(ACL)或仅允许特定的源(Origin)进行连接,您需要确保客户端的请求来源在允许的范围内。例如,如果服务器只允许来自特定域名的连接,而您的客户端从…

【微信小程序开发】如何定义公共的js函数,其它页面可以调用

在微信小程序开发中&#xff0c;可以通过以下步骤定义和使用公共的 JS 函数&#xff0c;使得其它页面可以调用&#xff1a; 1. 创建一个公共的 JS 文件&#xff1a;在项目的 utils 目录下创建一个 JS 文件&#xff0c;例如 utils/util.js。 2. 定义公共函数&#xff1a;在 uti…

在word中删除endnote参考文献之间的空行

如图&#xff0c;在References中&#xff0c;每个文献之间都有空行。不建议手动删除。打开Endnote。 打开style manager 删除layout中的换行符。保存&#xff0c;在word中更新参考文献即可。

Python和C++全球导航卫星系统和机器人姿态触觉感知二分图算法

&#x1f3af;要点 &#x1f3af;马尔可夫随机场网格推理学习 | &#x1f3af;二维伊辛模型四连网格模型推理 | &#x1f3af;统计物理学模型扰动与最大乘积二值反卷积 | &#x1f3af;受限玻尔兹曼机扰动和最大乘积采样 | &#x1f3af;视觉概率生成模型测试图像 &#x1f3…

从课本上面开始学习的51单片机究竟有什么特点,在现在的市场上还有应用吗?

引言 51单片机&#xff0c;作为一种经典的微控制器&#xff0c;被广泛应用于各种嵌入式系统中。尽管如今ARM架构的高性能低成本单片机在市场上占据主导地位&#xff0c;但51单片机凭借其独特的优势依然在某些领域保持着应用价值。本文将深入探讨51单片机的特点、架构、应用以及…

ubuntu22.04 安装boost

下载boost压缩包&#xff0c;我这里上传了一份1_81_0版本tar -xzvf boost_1_81_0.tar.gzcd boost_1_81_0/sudo apt install build-essential g autotools-dev libicu-dev libbz2-dev -ysudo ./bootstrap.sh --prefix/usr/./b2sudo ./b2 install 上述7步完成后&#xff0c;相关…

数学建模·模糊评价法

模糊评价法 一种解决评价问题或者得出最佳方案的方法 主观性仍比较强 具体定义 三集&#xff1a;因素集&#xff0c;评语集和权重集&#xff0c;通过模拟矩阵的处理得到最合理的评语 具体步骤 因素集 因素集的确定不难&#xff0c;难在对分级评价时&#xff0c;对因素集的分级…

LeetCode --- 134双周赛

题目 3206. 交替组 I 3207. 与敌人战斗后的最大分数 3208. 交替组 II 3209. 子数组按位与值为 K 的数目 一、交替组 I & II 题目中问环形数组中交替组的长度为3的子数组个数&#xff0c;主要的问题在于它是环形的&#xff0c;我们要考虑首尾相接的情况&#xff0c;如何…

阿里新开源GPU版本的FunASR安装避坑

#当前安装过程没有cpu版本顺利 1.个人在自己的电脑上安装ubantu系统&#xff0c;以便使用本身的显卡功能(本人显卡NVIDIA GeForce RTX 4060)&#xff08;这里需要注意&#xff0c;更新里面有附加驱动安装驱动会导致黑屏&#xff0c;小伙伴不要心急重装系统&#xff0c;可以ctr…

ES索引模板

在Elasticsearch中&#xff0c;索引模板&#xff08;Index Templates&#xff09;是用来预定义新创建索引的设置和映射的一种机制。当你创建了一个索引模板&#xff0c;它会包含一系列的默认设置和映射规则&#xff0c;这些规则会在满足一定条件的新索引被创建时自动应用。 索…

UOS查看系统信息命令行

UOS查看系统信息命令行 *** Rz整理 仅供参考 *** dmidecode查看System Boot信息 midecode -t 32 dmidecode查看System Reset信息 midecode -t 23 dmidecode查看机箱信息 midecode -t chassis dmidecode查看BIOS信息 midecode -t bios dmidecode查看CPU信息 dmidecode …

leetcode 404. 左叶子之和

给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;所以返回 24示例 2: 输入: root [1] 输出: 0提示: 节点…

Linux 下使用Docker安装redis

redis&#xff1a; 是一个高性能的&#xff0c;键值对的&#xff0c;将数据存储到内存中的非关系型数据库&#xff08;nosql数据库 not only sql&#xff09; 高性能&#xff1a;数据存在内存中&#xff0c;直接访问内存 键值对&#xff1a;新闻id&#xff08;键&#xff09…

c++数据结构--构造无向图(算法6.1),深度和广度遍历

实验内容&#xff1a; 实现教材算法6.2利用邻接矩阵构造无向图的算法&#xff0c;提供从邻接矩阵获得邻接表的功能&#xff0c;在此基础上进行深度优先遍历和广度优先遍历。 实验步骤&#xff1a; &#xff08;1&#xff09;按照实验要求编写代码&#xff0c;构造无向图。 …