# -*- encoding:utf-8 -*- # A = [1, 1, 2, 2, 2, 2] # target = 5 from __future__ import print_function def main(A, target): count = 0 num = len(A) hash1 = dict() for indx_i in range(num): if A[indx_i] in hash1: hash1[A[indx_i]] += 1 else: hash1[A[indx_i]] = 1 #print("hash table: ", hash1) keys = list(hash1.keys()) for indx_i in range(len(keys)): i = keys[indx_i] if hash1.get(i) > 2 and i + i + i == target: count_delta = (hash1.get(i - 2) * hash1.get(i - 1) * hash1.get(i)) / 6 count += count_delta print ("+", i, i, i, ":", count_delta) for indx_j in range(indx_i + 1, len(keys)): j = keys[indx_j] if hash1.get(i) > 1 and i + i + j == target: count_delta = (hash1.get(i) * (hash1.get(i) - 1) * hash1.get(j)) / 2 count += count_delta print ("+", i, i, j, ":", count_delta) if hash1.get(j) > 1 and i + j + j == target: count_delta = (hash1.get(i) * hash1.get(j) * (hash1.get(j) - 1)) / 2 count += count_delta print ("+", i, j, j, ":", count_delta) for indx_k in range(indx_j + 1, len(keys)): k = keys[indx_k] if i + j + k == target: count_delta = hash1.get(i) * hash1.get(j) * hash1.get(k) count += count_delta print ("+",i, j, k, ":", count_delta) return count if __name__ == '__main__': result = main(A=[1, 1, 2, 2, 2, 2, 3, 3], target=5) print("result:", result)
编程题-三数求和
最新推荐文章于 2022-11-03 19:03:14 发布