DAY29-T77&T1726-2022-02-13-非自己作答

这篇博客探讨了两种不同的算法问题。第一个问题是找到给定整数n和k的所有可能的k个数的组合,使用递归回溯的方法实现了这一功能。第二个问题是在一个数组中寻找满足a*b=c*d条件的不同元组(a,b,c,d),通过计算乘积的频次并进行组合计数来解决。这两个问题都展示了在算法设计中如何有效地处理组合问题。

77
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        ans = list()
        t = list()
        def find_all(i,j):
            if j == k:
                ans.append(t[:])
            else:
                if i <= n- k + j + 1:
                    for a in range(i,n+1):
                        t.append(a)
                        find_all(a+1,j+1)
                        t.pop()
        find_all(1,0)
        return ans

# 作者:haotianmingyue
# 链接:https://leetcode-cn.com/problems/combinations/solution/python-hui-su-by-haotianmingyue-0jav/

1726 同积元组
给你一个由 不同 正整数组成的数组 nums ,请你返回满足 a * b = c * d 的元组 (a, b, c, d)的数量。其中 a、b、c 和 d 都是 nums 中的元素,且 a != b != c != d 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/tuple-with-same-product

class Solution:
    def tupleSameProduct(self, nums: List[int]) -> int:
        n=len(nums)
        freq = Counter([nums[i]*nums[j] for i in range(n) for j in range(i+1,n)])
        cnt=0
        for prod in freq:
            if freq[prod]>0:
                cnt+=freq[prod]*(freq[prod]-1)//2*8
        return cnt

# 作者:yuer-flyfly
# 链接:https://leetcode-cn.com/problems/tuple-with-same-product/solution/ha-xi-biao-pai-lie-zu-he-tong-ji-yuan-zu-5q0v/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值