文章目录

  • 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)相关推荐

  1. 从零开始刷Leetcode——数组(1.26)

    文章目录 1.两数之和 26.删除排序数组中的重复项 马上要去读研了,作为一个转码的ee学生,刷题还是很必要的.从零开始,希望能坚持下去!打算按照类别和难度慢慢刷,一天两三道题左右,争取明年夏季找实习 ...

  2. 从零开始刷Leetcode——数组(11.15.16.18)

    文章目录 11. 盛最多水的容器 15. 三数之和 16. 最接近的三数之和 18. 四数之和 前800题easy难度想做的已经做完了,之后是medium难度 11. 盛最多水的容器 给你 n 个非负 ...

  3. 从零开始刷Leetcode——数组(122.167.169)

    文章目录 122.买卖股票的最佳时机 II 167.两数之和II 169.多数元素 122.买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计 ...

  4. 从零开始刷Leetcode——数组(941.977)

    文章目录 941. 有效的山脉数组 977. 有序数组的平方 三级目录 941. 有效的山脉数组 给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false. 让我们回顾一下, ...

  5. 从零开始刷Leetcode——数组(896.905.914.922)

    文章目录 896. 单调数列 905. 按奇偶排序数组 914. 卡牌分组 922. 按奇偶排序数组 II 896. 单调数列 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i &l ...

  6. 从零开始刷Leetcode——数组(830.849.888)

    文章目录 830. 较大分组的位置 849. 到最近的人的最大距离 888. 公平的糖果交换 830. 较大分组的位置 在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组. 例 ...

  7. 从零开始刷Leetcode——数组(746.747)

    文章目录 747. 至少是其他数字两倍的最大数 746. 使用最小花费爬楼梯 747. 至少是其他数字两倍的最大数 在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是 ...

  8. 从零开始刷Leetcode——数组(31.33)

    文章目录 31. 下一个排列 33. 搜索旋转排序数组 31. 下一个排列 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重 ...

  9. 从零开始刷Leetcode——数组(697.717.724)

    文章目录 697. 数组的度 717. 1比特与2比特字符 724. 寻找数组的中心索引 697. 数组的度 给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数 ...

最新文章

  1. CSS3---6.文字阴影
  2. [Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)
  3. Repeater无刷新分页
  4. dataframe只打印第一行_linux/unix下如何使用命令行删除文本文件的第一行?
  5. JavaScript-数据类型
  6. Django框架介绍 day01
  7. R语言相关关系可视化函数梳理
  8. 服务器进销财务管理系统,进销存财务管理系统
  9. 统计学中的三大相关系数
  10. 基于.net开发chrome核心浏览器【六】
  11. 有关Cidaemon.exe服务占用大量CPU资源的解决办法
  12. Bagging和Boosting 策略及其区别
  13. 08年最感人的文章,不信你不哭
  14. What’s difference between 1’s Complement and 2’s Complement?
  15. 解决爱加密后百度地图不能正常使用
  16. SAP入门技术分享四:模块化程序
  17. 待办事项html页面,[待办事项]
  18. JAVA实现线性表顺序存储结构ArrayList
  19. 海思3559万能平台搭建:OSD实时叠加的支持1SDL库 FREETYPE库 SDL_TTF库的移植
  20. ad20修改差分线粗细_一图胜千字:科研论文插图/数据处理和图表 制作线上班 5月16日开始...

热门文章

  1. NODE_ENV不是内部或外部命令,也不是可运行的程序
  2. zabbix-自定义键值监控网卡IN、OUT流量
  3. 显示出eclipse文件层次
  4. trados 2007 2009 共用一个LICENSE服务器
  5. 隐藏控制台程序的窗口
  6. linux在当前目录下打开终端,linux - 终端:在窗口中打开当前路径? - Ubuntu问答...
  7. 测试面试题,自动化测试与性能测试篇(附答案)
  8. jdbc postgresql mysql_jdbc无法连接postgresql数据库
  9. 韩忠康 5天玩转mysql_玩转MySQL数据库5天就够了(2)
  10. 守护进程: supervisor使用