LeetCode 611有効なトライアングル数

そして、非常によく似た質問3Sum。J = I + 1、K = N-1のように、我々は、I 3Sum固定されています。

この問題の三角形の二辺を必要とするため、第3の辺、NUMS [I] + NUMS [J]> NUMS [K]よりも大きいです。だから我々はKを固定するので、I = 0、J = K-1することができます。

NUMS [I] + NUMS [J]> NUMS [k]が、I、JおよびKプラスの範囲内の全ての数として[IのJ-1]記載の場合も可能です。

NUMS [i]が+ NUMS [J]≤nums[k]の場合のに対し、我々は、[i]はNUMSを増やす必要があり、それが増加します。

クラス解決{
 パブリックINT triangleNumber(ベクトル< INT >&NUMS){
         int型 N = nums.size()。
        int型のres = 0 ; 
        ソート(nums.begin()、nums.end()); 
        
        int型 K = N 1、K> = 0 ; - K){
             int型 I = 0、J = K- 1 一方(iは< j)を{
                 場合(NUMS [I] + NUMS [J]> NUMS [K]){ 
                    RES + = J-私;
                    - J; 
                } {
                     ++ I。
                } 
            } 
        }     
        戻りRES。
    } 
}。

Oの時間複雑さ(N ^ 2)

 

参照

https://leetcode.com/problems/valid-triangle-number/discuss/128135/A-similar-O(n2)-solution-to-3-Sum

おすすめ

転載: www.cnblogs.com/hankunyan/p/11525332.html