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

张开发
2026/4/3 9:09:50 15 分钟阅读
leetcode 1577. 数的平方等于两数乘积的方法数
Problem: 1577. 数的平方等于两数乘积的方法数排序然后计算平方若可以被整除二分查找后面是否存在商若存在商且数字相同则累加剪枝若a2 k1则breakCodeclass Solution { public: int numTriplets(vectorint nums1, vectorint nums2) { sort(nums1.begin(), nums1.end()); sort(nums2.begin(), nums2.end()); int n1 nums1.size(), n2 nums2.size(); int ans 0, k1, k2, ind; long long a1, a2; for(int i 0; i n1; i) { k1 a1 nums1[i]; a1 * a1; for(int j 0; j n2; j) { a2 nums2[j]; if(a2 k1) break; if( a1 % a2 0) { k2 a1/a2; ind lower_bound(nums2.begin() j 1, nums2.end(), k2) - nums2.begin(); if(indn2 || nums2[ind]!k2) continue; while(ind n2 nums2[ind] k2) { ind; ans; } } } } for(int i 0; i n2; i) { k2 a2 nums2[i]; a2 * a2; for(int j 0; j n1; j) { a1 nums1[j]; if(a1 k2) break; if( a2 % a1 0) { k1 a2 / a1; ind lower_bound(nums1.begin() j 1, nums1.end(), k1) - nums1.begin(); if(indn1 || nums1[ind] ! k1) continue; while(ind n1 nums1[ind] k1) { ind; ans; } } } } return ans; } };

更多文章