找出陣列中兩個元素相加等於10的組合

2021-10-16 10:32:56 字數 1468 閱讀 5222

1,o(n^2) 雙重迴圈:

def get_pair(input_list): # 簡單雙重迴圈,結果會有很多重複值。 

for v1 in input_list:

for v2 in input_list:

if v1 + v2 == 10:

print(v1, v2)

l = [2,3,5,1,8,9,5,7,4,6,9]

get_pair(l)

-------------------------------------

def get_pair(input_list): # 為了去掉重複值,使用下標遍歷list,且i < j。

for i in range(len(input_list)):

for j in range(len(input_list)):

if input_list[i] + input_list[j] == 10 and i < j:

print(input_list[i], input_list[j])

l = [2,3,5,1,8,9,5,7,4,6,9]

get_pair(l)

2,o(nlogn) 先排序再一重迴圈:

def get_pair(input_list):

low = 0

high = len(input_list) - 1

while low < high:

if input_list[low] + input_list[high] > 10:

high -= 1

elif input_list[low] + input_list[high] < 10:

low += 1

else:

print(input_list[low], input_list[high])

low += 1

l = [2,3,5,1,8,9,5,7,4,6,9]

l.sort()

get_pair(l)

def get_pair(input_list):

dic = {}

for v in input_list:

if v not in dic: # 為了去掉重複值,將元素插入dictionary時,記錄出現的次數。

dic[v] = 0

else:

dic[v] = dic[v] + 1

for v in input_list:

if 10 - v in dic and dic[10-v] >= 0: # 限制乙個元素只能用一次。

print(v, 10-v)

dic[10-v] = dic[10-v] - 1

dic[v] = dic[v] - 1

l = [2,3,5,1,8,9,5,7,4,6,9]

get_pair(l)

給定乙個整數陣列,找出其中兩個數相加等於目標值

兩層遍歷,最直觀 時間複雜度 o n n 實現 public int twosum int numbers,int target return result 時間複雜度 o n 第一遍遍歷 將 target a 和i 作為鍵值對,存入hash表,遍歷時間複雜度為o n 第二遍遍歷 查詢在hash表中...

給定乙個整數陣列,找出其中兩個數相加等於目標值

example given nums 2,7,11,15 target 9,because nums 0 nums 1 2 7 9,return 0,1 題目的意思 在無序的陣列中找兩個數,使得這兩個數之和與給定的目標值相等,返回這兩個數的下標。大佬們的做法 下面 不是好的實現方法,可以用hash表...

找出整數陣列中兩兩相加等於key的整數對

前天在某個公司的現場筆試中遇到一道程式設計題,很簡單,然後當時直接寫了個雙重迴圈 public static arraylistfindnumcouple1 int array,int key else if array left array right key else return strarr...