首頁>Club>
3
回覆列表
  • 1 # 使用者2510928681642596

    題目描述給定一個無序陣列,包含正數、負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度:O(n),空間複雜度:O(1)輸入描述:無序整數陣列A[n]輸出描述:滿足條件的最大乘積示例1輸入3 4 1 2輸出24思路:這道題可以從結果入手,分析陣列的構成情況。當結果為正時,說明陣列可能有至少 三個正數/一個正數兩個負數,乘積最大隻有兩種情況:三個最大正數一個最大正數和兩個最小負數當結果為負時,除非陣列只有三個數,否則說明沒有正數,乘積最大隻有一種情況:三個最大負數當結果為0時,說明取數必須取到0,則其他數最多存在兩個正數且最多一個負數/沒有正數且負數隨意。分析發現,無論以上哪種情況,取最大的三個數,或者最小的兩個數和最大的一個數算乘積,都能涵蓋。程式碼:a = int(input()) num = [int(n) for n in input().split()] #python的陣列輸入,程式設計題常用 num.sort(reverse = True) #內建函式sort()對列表排序,reverse = True降序,預設為升序 a=num[0]*num[1]*num[2] b=num[-1]*num[-2]*num[0] if a>=b: print(a) else: print(b)注:測試發現,牛客網的測試樣例有缺陷,示例中不包含輸入的陣列長度,但測試樣例有兩行:第一行是陣列大小 n,第二行是無序整數陣列 A[n],因此我們需要用一個變數a來捕獲第一行的資料

  • 中秋節和大豐收的關聯?
  • 12306候補購票是什麼意思?