当前位置: 首页 > news >正文

代码随想录算法训练营第六天 - 哈希表part02

454.四数之和II

核心思想:利用字典的key,value
4个数组两两分组,nums1+nums2 的两两元素之和 及 计数 先存入字典中,然后对nums3和nums4的进行元素相加 然后对比字典中是否有对应的key,有就count+value

class Solution(object):def fourSumCount(self, nums1, nums2, nums3, nums4):n=len(nums1)hashmap=dict()count=0for n1 in nums1:for n2 in nums2:if (n1+n2) in hashmap:hashmap[n1+n2]+=1else:hashmap[n1+n2]=1for n3 in nums3:for n4 in nums4:k=-(n3+n4)if k in hashmap:count+=hashmap[k]return count

15. 三数之和

重点是去重的逻辑,对a,b,c分别设计去重逻辑,妙(是说卡哥

        nums.sort()n=len(nums)res=[]for i in range(n):left=i+1right=n-1#a去重,因为nums[i]值不变,后面nums[left],nums[right]的组合就会有可能重复,直接跳过#但需要i>0,和前一个元素做对比。 如果是对比num[i] num[i+1],会错过b值if 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]])#当遇到nums[i],nums[left]固定,right指向的值和前一个相等,则可以跳过while left<right and nums[right]==nums[right-1]:right-=1while left<right and nums[left]==nums[left+1]:left+=1right-=1left+=1return res

18.四数之和

…待写

http://www.lryc.cn/news/291881.html

相关文章:

  • 【Javaweb程序设计】【C00165】基于SSM的高考志愿辅助填报系统(论文+PPT)
  • 海外云手机为什么吸引用户?
  • 将`List<String>`转换为`List<Long>`
  • 【Unity3D小功能】Unity3D中Text使用超链接并绑定点击事件
  • MyBatis-Plus CRUD 接口
  • 在JVM中,Java对象是如何创建、存储和访问的?
  • C++类和对象之进击篇
  • ElementUI 组件:Container 布局容器
  • 小米商城服务治理之客户端熔断器(Google SRE客户端熔断器)
  • Springboot 校验工具类
  • 编程笔记 html5cssjs 069 JavaScrip Undefined数据类型
  • MySQL 处理JSON字符串
  • python爬虫-多线程-数据库——WB用户
  • 有向图查询所有环,非递归
  • SpringBoot 使用WebSocket功能
  • HTML5的新特性
  • Filter过滤器学习使用
  • 关于修改数据库服务器时间导致达梦数据库集群裂开
  • 自定义包的设计与实现
  • 时机成熟了
  • Linux 驱动开发基础知识——总线设备驱动模型(八)
  • SpringBoot+BCrypt算法加密
  • 更新至2023年,2002-2023年3月中国国债发行数据
  • 2024最新版TypeScript安装使用指南
  • 国外知名的农业机器人公司
  • 【EI会议征稿中|ACM出版】#先投稿,先送审#第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024)​
  • 【笔试常见易错选择题01】else、表达式、二维数组、%m.ns、%m.nf、常量指针和指针常量、宏定义、传参、数组越界、位段
  • Unity中常见的单词
  • 【仅需一步,1分钟极速开服】幻兽帕鲁保姆级教程
  • Zoho Mail 2023:回顾过去,展望未来:不断进化的企业级邮箱解决方案