zoukankan      html  css  js  c++  java
  • 532. 数组中的K-diff数对

     

     

     

    思路:

    想到:绝对值应是非负数,所以k<0的情况下要排除(测试用例有k<0的);
    设置计数器ans=0;
    1、转set去重,再转回list,将newnums[]升序排列;
    2、若k==0,则 2-diff 数对是相同元素对,所以遍历newnums,其中元素nums.count(newnums[i]) >= 2,
      ans加1;

    3、若k>0,则 2-diff 数对是不同元素对,遍历newnums,若(newnums[i] + k)也在newnums中,
      则ans加1;

    4、返回ans。

     1 class Solution(object):
     2     def findPairs(self, nums, k):
     3         """
     4         :type nums: List[int]
     5         :type k: int
     6         :rtype: int
     7         """
     8         # 绝对值应是非负数
     9         if k < 0:
    10             return 0
    11         # 转set去重,再升序排
    12         newnums = sorted(set(nums))
    13         ans = 0
    14         # 差为0,则是相同元素对
    15         if k == 0:
    16             for i in range(len(newnums)):
    17                 if nums.count(newnums[i]) >= 2:
    18                     ans += 1
    19         # 差的绝对值大于0,则是不同元素对
    20         else:
    21             for i in range(len(newnums)):
    22                 if newnums[i] + k in newnums:
    23                     ans += 1
    24         return ans
    25 
    26 
    27 if __name__ == '__main__':
    28     solution = Solution()
    29     print(solution.findPairs([1, 3, 1, 4, 5], 0))
  • 相关阅读:
    vue-路由传参
    ES6模板字符串
    es6中Set和Map数据结构
    本周面试题
    var、let和const定义变量的特点
    修改this的指向
    Echarts图表插件
    ES6学习
    swiper插件学习
    每日刷题4
  • 原文地址:https://www.cnblogs.com/panweiwei/p/12757702.html
Copyright © 2011-2022 走看看