从零开始刷Leetcode——数组(532.561)
文章目录
- 532. 数组中的K-diff数对
- 561. 数组拆分 I
532. 数组中的K-diff数对
给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对。这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k.
1.哈希表
class Solution:def findPairs(self, nums: List[int], k: int) -> int:dict = {}count = 0for i in range(len(nums)):if nums[i] in dict:dict[nums[i]] += 1else:dict[nums[i]] = 1if k == 0:for j in dict:if dict[j]//2 > 0:count += 1elif k < 0:return 0else:for index in dict:if index+k in dict:count += 1return count
这题坑好多,k为负数要返回0.。。哈希表基本都一个套路,转换成字典再运算。148ms,15.2MB
2.利用集合的性质
class Solution:def findPairs(self, nums: List[int], k: int) -> int:if k < 0:return 0if k == 0:return len(set([i for i in nums if nums.count(i)>=2]))cl = [i+k for i in nums]return len(set(cl)&set(nums))
k为0时,返回列表中元素数量大于1的数的集合,k大于0时,用原列表的集合和原列表+k的集合进行与操作得到结果。164ms,16.1MB
3.依然是集合
class Solution:def findPairs(self, nums: List[int], k: int) -> int:if k < 0:return 0# s存储遍历的元素, r存储上面注释的3s, r = set(), set()for n in nums:if n + k in s:r.add(n + k)if n - k in s:r.add(n)s.add(n)return len(r)
比较直接了,一个集合存所有不重复的值,一个存符合条件的值。144ms,15.7MB
561. 数组拆分 I
给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。
1.排序
class Solution:def arrayPairSum(self, nums: List[int]) -> int:nums.sort()return sum(nums[::2])
388ms,16.3MB
从零开始刷Leetcode——数组(532.561)相关推荐
- 从零开始刷Leetcode——数组(1.26)
文章目录 1.两数之和 26.删除排序数组中的重复项 马上要去读研了,作为一个转码的ee学生,刷题还是很必要的.从零开始,希望能坚持下去!打算按照类别和难度慢慢刷,一天两三道题左右,争取明年夏季找实习 ...
- 从零开始刷Leetcode——数组(11.15.16.18)
文章目录 11. 盛最多水的容器 15. 三数之和 16. 最接近的三数之和 18. 四数之和 前800题easy难度想做的已经做完了,之后是medium难度 11. 盛最多水的容器 给你 n 个非负 ...
- 从零开始刷Leetcode——数组(122.167.169)
文章目录 122.买卖股票的最佳时机 II 167.两数之和II 169.多数元素 122.买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计 ...
- 从零开始刷Leetcode——数组(941.977)
文章目录 941. 有效的山脉数组 977. 有序数组的平方 三级目录 941. 有效的山脉数组 给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false. 让我们回顾一下, ...
- 从零开始刷Leetcode——数组(896.905.914.922)
文章目录 896. 单调数列 905. 按奇偶排序数组 914. 卡牌分组 922. 按奇偶排序数组 II 896. 单调数列 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i &l ...
- 从零开始刷Leetcode——数组(830.849.888)
文章目录 830. 较大分组的位置 849. 到最近的人的最大距离 888. 公平的糖果交换 830. 较大分组的位置 在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组. 例 ...
- 从零开始刷Leetcode——数组(746.747)
文章目录 747. 至少是其他数字两倍的最大数 746. 使用最小花费爬楼梯 747. 至少是其他数字两倍的最大数 在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是 ...
- 从零开始刷Leetcode——数组(31.33)
文章目录 31. 下一个排列 33. 搜索旋转排序数组 31. 下一个排列 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重 ...
- 从零开始刷Leetcode——数组(697.717.724)
文章目录 697. 数组的度 717. 1比特与2比特字符 724. 寻找数组的中心索引 697. 数组的度 给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数 ...
最新文章
- CSS3---6.文字阴影
- [Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)
- Repeater无刷新分页
- dataframe只打印第一行_linux/unix下如何使用命令行删除文本文件的第一行?
- JavaScript-数据类型
- Django框架介绍 day01
- R语言相关关系可视化函数梳理
- 服务器进销财务管理系统,进销存财务管理系统
- 统计学中的三大相关系数
- 基于.net开发chrome核心浏览器【六】
- 有关Cidaemon.exe服务占用大量CPU资源的解决办法
- Bagging和Boosting 策略及其区别
- 08年最感人的文章,不信你不哭
- What’s difference between 1’s Complement and 2’s Complement?
- 解决爱加密后百度地图不能正常使用
- SAP入门技术分享四:模块化程序
- 待办事项html页面,[待办事项]
- JAVA实现线性表顺序存储结构ArrayList
- 海思3559万能平台搭建:OSD实时叠加的支持1SDL库 FREETYPE库 SDL_TTF库的移植
- ad20修改差分线粗细_一图胜千字:科研论文插图/数据处理和图表 制作线上班 5月16日开始...
热门文章
- NODE_ENV不是内部或外部命令,也不是可运行的程序
- zabbix-自定义键值监控网卡IN、OUT流量
- 显示出eclipse文件层次
- trados 2007 2009 共用一个LICENSE服务器
- 隐藏控制台程序的窗口
- linux在当前目录下打开终端,linux - 终端:在窗口中打开当前路径? - Ubuntu问答...
- 测试面试题,自动化测试与性能测试篇(附答案)
- jdbc postgresql mysql_jdbc无法连接postgresql数据库
- 韩忠康 5天玩转mysql_玩转MySQL数据库5天就够了(2)
- 守护进程: supervisor使用