タイトル:二乗値の異なる規則配列、多数の解決{ - 1} 2に戻り、両方の場合において-1,0,1,1だけ0,1二乗値を、{ - 3 -1,0、 0,2、3}がここに戻るには0,1,4,9 4,4のケースを戦うために家族の部屋にあります。
要件:Oの時間複雑度(n)は、空間複雑性O(1)
分析:
広範囲のダブルポインタの問題解決の秩序配列の使用であります
第二に、地図(又はハッシュ)、二点
同様にターゲット= 0そして、各検査ヘッドおよびテールポインタは、0又はこれら3例未満0分析より大きい0に等しい。指定されたターゲットと 数が繰り返されてもよいことに注意は、重いを移動する必要があります。
// 異なる要素の数を返すの二乗後 INT diffSqureNum(constのベクトル< INT >&NUMS) { IF(!nums.size()) 戻り 0 ; int型 L = 0、R&LT nums.size =() - 1 ; INT = CNT 0 ; 一方、(L <= R&LT) { IF(NUMS [L] + NUMS [R&LT] == 0 ) { CNT ++ ; int型 TMP = NUMS [L]; 一方、(L <= R&LT && NUMS [L ] == TMP)L ++; 一方、(L <= R && NUMS [R] == -tmp)r--の。 } そう であれば(NUMS [L] + NUMS [R]> 0 ) { CNT ++ 。 INT TMP = NUMS [R]。 一方、(L <= R && NUMS [R] == TMP)r--の。 } 他 { CNT ++ 。 INT TMP = NUMS [L]。 一方、(L <= R && NUMS [L] == TMP)L ++ 。 } } 戻りCNT。 }
参考リンク:https://blog.csdn.net/qq_42673507/article/details/90673318