タイトル説明
インクリメント入力とデジタルソートされた配列のSは、アレイ内の2つの数値を見つけ、それらが正確であることS、および複数桁の数字は、S、両者の最小数の出力の積に等しい場合。
出力説明:
各テストケースに対応する、2つの数の出力、第1の小出力。
分析
- 方法a:ダブルループ
暴力解法
、およびすべての2つの数値を取得し、時間計算量はO(あります )。 - 方法2:をフルに活用
数组递增有序
2つにポインタを提供される機能数组的两头
、および大、ポインタが大幅に減少し、2つの出口ループを満たすために、リターンポインタに等しくポインタ小さい、わずかな増加。同様に2つの数の出力場合乘积最大
、初期には两指针指向中间两个数
、いずれかの側に移動します。
コード
# -*- coding:utf-8 -*-
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
if not array:
return []
lowP = 0
highP = len(array)-1
while lowP<highP:
if array[lowP]+array[highP]<tsum:
lowP += 1
elif array[lowP]+array[highP]>tsum:
highP -= 1
else:
return array[lowP],array[highP]
return []