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...