2つの数Sの他のアルゴリズムと-042-(ダブルポインタ思想)

記事のディレクトリ

タイトル説明

インクリメント入力とデジタルソートされた配列のSは、アレイ内の2つの数値を見つけ、それらが正確であることS、および複数桁の数字は、S、両者の最小数の出力の積に等しい場合。

出力説明:

各テストケースに対応する、2つの数の出力、第1の小出力。

分析

  • 方法a:ダブルループ暴力解法、およびすべての2つの数値を取得し、時間計算量はO(あります n個 2 N ^ 2 )。
  • 方法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 []
公開された219元の記事 ウォン称賛85 ビュー14万+

おすすめ

転載: blog.csdn.net/z_feng12489/article/details/103593280