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

黄村做网站哪家好厦门网

黄村做网站哪家好,厦门网,最火网站排名,网站建设活动广告1577. 数的平方等于两数乘积的方法数 已解答 中等 相关标签 相关企业 提示 给你两个整数数组 nums1 和 nums2 ,请你返回根据以下规则形成的三元组的数目(类型 1 和类型 2 ): 类型 1:三元组 (i, j, k) &#xff…

1577. 数的平方等于两数乘积的方法数

已解答

中等

相关标签

相关企业

提示

给你两个整数数组 nums1 和 nums2 ,请你返回根据以下规则形成的三元组的数目(类型 1 和类型 2 ):

  • 类型 1:三元组 (i, j, k) ,如果 nums1[i]2 == nums2[j] * nums2[k] 其中 0 <= i < nums1.length 且 0 <= j < k < nums2.length
  • 类型 2:三元组 (i, j, k) ,如果 nums2[i]2 == nums1[j] * nums1[k] 其中 0 <= i < nums2.length 且 0 <= j < k < nums1.length

示例 1:

输入:nums1 = [7,4], nums2 = [5,2,8,9]
输出:1
解释:类型 1:(1,1,2), nums1[1]^2 = nums2[1] * nums2[2] (4^2 = 2 * 8)

示例 2:

输入:nums1 = [1,1], nums2 = [1,1,1]
输出:9
解释:所有三元组都符合题目要求,因为 1^2 = 1 * 1
类型 1:(0,0,1), (0,0,2), (0,1,2), (1,0,1), (1,0,2), (1,1,2), nums1[i]^2 = nums2[j] * nums2[k]
类型 2:(0,0,1), (1,0,1), (2,0,1), nums2[i]^2 = nums1[j] * nums1[k]

示例 3:

输入:nums1 = [7,7,8,3], nums2 = [1,2,9,7]
输出:2
解释:有两个符合题目要求的三元组
类型 1:(3,0,2), nums1[3]^2 = nums2[0] * nums2[2]
类型 2:(3,0,1), nums2[3]^2 = nums1[0] * nums1[1]

示例 4:

输入:nums1 = [4,7,9,11,23], nums2 = [3,5,1024,12,18]
输出:0
解释:不存在符合题目要求的三元组

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 1 <= nums1[i], nums2[i] <= 10^5

 

 解决思路:直观来看,直接暴力遍历算法也是正确的,然而时间复杂度比较高O(n^3),根据leetcode的规律,只有数据规模小于100的时候,才能使用这个复杂度的算法。所以,需要优化,这里使用哈希表记录每个数组的平方值,然后统计第二个数组中nums1[j] * nums1[k] 是否==第一个数组中的平方值,有的话就相加,没有就继续。复杂度可以降低为O(n^2),通过测试。

class Solution {
public:int numTriplets(vector<int>& nums1, vector<int>& nums2) {int n = nums1.size();int m = nums2.size();unordered_map<long, int> square_count1;unordered_map<long, int> square_count2;int count = 0;// 计算 nums1 和 nums2 每个元素的平方,并存储在哈希表中for (int num : nums1) {long square = (long)num * num;square_count1[square]++;}for (int num : nums2) {long square = (long)num * num;square_count2[square]++;}// 枚举 nums1 的所有可能的两个元素的乘积for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {long product = (long)nums1[i] * nums1[j];// 检查 product 的平方是否在哈希表中count+=square_count2[product];}}// 枚举 nums2 的所有可能的两个元素的乘积for (int i = 0; i < m; ++i) {for (int j = i + 1; j < m; ++j) {long product = (long)nums2[i] * nums2[j];// // 检查 product 的平方是否在哈希表中count+=square_count1[product];}}return count;}
};

执行用时分布

135ms

击败34.58%使用 C++ 的用户

消耗内存分布

37.60MB

击败9.34%使用 C++ 的用户

官方题解给了更快的算法。随着AI的大模型普及,以后程序员可能会成为历史,可能以后编程就是提示和应用工程师。但是算法的思想和解决问题的能力,这个暂时是AI无法替代的。

http://www.ds6.com.cn/news/81442.html

相关文章:

  • 长春网站制作招聘信息软文发稿公司
  • 济宁网站建设制作设计企业策划书
  • 做网站需要了解seo优化的优点
  • 怎么做兼职网站吗陕西疫情最新消息
  • 广西网站建设建议网络公司seo教程
  • 网站申请流程爱站网关键词密度查询
  • 浙江省住房和城乡建设厅官方网站国家大事新闻近三天
  • html电影网站模板网站搭建公司哪家好
  • 织梦网站怎么做二级域名2023知名品牌营销案例100例
  • 英文淘宝网站建设app推广代理平台
  • 向搜索引擎提交网站地图深圳网站建设公司官网
  • ifm网站做啥的在哪里找软件开发公司
  • 佛山网站建设公司哪家性价比高最近新闻事件
  • 网站做优化需要哪些后台信息自助建站系统源码
  • 哪个网站做螺丝生意好旅行网站排名前十名
  • wordpress 防站教程网站建设优化的技巧
  • 怎样提升企业网站的访问青岛模板建站
  • 建设银行官方网站首页入口google关键词排名查询
  • 马云做黄页网站时候北京网站建设专业公司
  • jsp电商购物网站开发公司策划推广
  • 中山市饮食网站建设培训公司
  • 有什么方法在淘宝发布网站建设设计东莞seo技术培训
  • 做网站引流到天猫关键词搜索工具app
  • 企业可以做哪些网站有哪些怎么去推广自己的公司
  • 织梦网站如何做二级导航栏百度框架户开户渠道
  • 关于企业网站建设的必要性企业网站推广优化
  • 手机网站建设市场seo排名优化软件免费
  • 知名设计网站公司网站不收录怎么解决
  • 学生兼职网站开发seo优化人员
  • wordpress商城加导购北京seo顾问服务