Python程式:查詢包含(基數,數字)對的陣列中的匹配數
假設我們得到了幾個不同的(x, y)格式的數對。這裡x表示數字的基數,y表示數字本身。列表中存在意義相同的數對。我們必須檢查給定數對中的匹配數。給定的數對可能是冗餘的,也可能包含無效的基數-數字組合。
因此,如果輸入類似於num_inputs = 2, input_arr = [(10, 15), (8, 17)],則輸出將為1。
變數num_inputs指定輸入的數量,陣列input_arr列出了數對。在這裡,如果我們檢視這兩個數對;10進位制(十進位制)的15與8進位制(八進位制)的17相同。因此,有一個匹配項,我們返回輸出值1。
為了解決這個問題,我們將遵循以下步驟:
arr_len := input_arr的大小
temp_dict := 一個包含整數值的新對映
對於從0到num_inputs的i,執行:
num_base := input_arr中第i個數對的第一個數字的字串表示
num_val := input_arr中第i個數對的第二個數字的字串表示
temp_dict[(num_val的整數表示, num_base的整數表示)] := temp_dict[(num_val的整數表示, num_base的整數表示)] + 1
- cnt := 0
- 對於temp_dict所有值的列表中的每個值,執行:
- cnt := cnt + 值 * floor((值 - 1) / 2)
- 返回cnt
示例
讓我們看看下面的實現,以便更好地理解:
from collections import defaultdict def solve(num_inputs, input_arr): arr_len = len(input_arr) temp_dict = defaultdict(int) for i in range(num_inputs): num_base, num_val = str(input_arr[i][0]), str(input_arr[i][1]) temp_dict[int(num_val, int(num_base))] += 1 cnt = 0 for value in temp_dict.values(): cnt += value*(value - 1)//2 return cnt print(solve(2, [(10, 15), (8, 17)]))
輸入
2, [(10, 15), (8, 17)]
輸出
1
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP