このブログは、ブログ書かれたリファレンスCYC、ダブルポインタの一部であり、
167二つの数|| - 入力の順序付けられた配列
入力配列は、それらの合計が目標数の和に等しくなるように、2つの数値を見つける昇順で順序付けられた配列は、であるためです。
したがって、昇順に利用特性、ダブルポインタ、吐出ヘッドと吐出テール。二つの数が目標数、テール・ポインタの合計よりも小さい場合、2つの数字が、目標数、先頭ポインタ++の合計よりも小さい場合 - 。
クラス解決{ パブリック: ベクトル < INT > twoSum(ベクトル< INT >&番号、int型のターゲット){ int型 I = 0、J = numbers.size() - 1 ; 一方、(J> I){ 場合(番号[I] +数字[J] == ターゲット){ リターン {I + 1、J + 1 }。 } であれば(番号[I] +数字[J] <ターゲット)++ I。 もし(番号[I] +数字[J]>ターゲット) - J。 } 戻り { -1、 - 1 }。 } }。
633.平方数之和
ヘッド・ポインタは、AおよびBは、二つの番号があるかどうかを決定するために、また、テール・ポインタであるテイルポインタSQRT(C)では、2つの和の平方から出発ゼロから^ 2 + B ^ 2 = C。そして先頭ポインタヘッド・ポインタが++であろうcよりも大きい場合、Cは、テール・ポインタ場合よりも少ないであろう - ヘッド・ポインタは、以上のCテイルポインタに等しくなるまで。
クラス解決{ パブリック: BOOL judgeSquareSum(INT C){ 長い 長い分= 0 。 長い 長い最大= SQRT(C); 長い 長い合計。 一方(MIN <= MAX){ 合計 =分*分+最大* マックス。 もし(合計== c)に 戻ります 真。 もし(合計<C)分++ 。 もし(合計> C)max-- 。 } を返す 偽; } }。
345リバース母音列
母音は、同じ二重ポインタ、文字列の先頭文字列の一方の端を使用して、文字列を反転します。どの母音を参照し、二つのポインタを交換してから行くために次に続けることが、母音を指しているまで停止。
クラス解決{ パブリック: 文字列 reverseVowels(ストリングS){ 文字列 A = " aeiouAEIOU " 。 int型私= 0 ; INT J = s.size() - 1 ; 一方(iは< j)を { ながら((a.find(S [i])と<a.length())&& iが<!j)を I ++ 。 しばらく(!(a.find(S [J])<a.length())&& I < J) J - 。 スワップ(S [iが ++]、[S j--]); } 戻りS。 } }。
680回文文字列を確認します||
頭部にパリンドロームストリング列対称、二重ポインタを参照し、決定された頭部と尾部に尾は等しくありません。あなたが文字を削除することができますので。だから、左側に異なる文字のために、右のそれぞれちょうど右再帰を使用して処理を削除します。
クラス解決{ パブリック: BOOL validPalindrome(ストリングS){ 戻り sfhw(S、0、s.size() - 1、0 ); } BOOL sfhw(ストリング S、int型のインデックス1、int型 INDEX2、int型のフラグ){ // フラグ代表是否跳过 一方(index1の< INDEX2){ もし、(S [index1の] == S [INDEX2]){index1の++。INDEX2 - ;} そう{ 場合(フラグ== 1)返す falseに ; // すでに直接返すかどうかを、スキップした場合 、他の リターン sfhw(S、index1の、+を1。、INDEX2、1。)|| sfhw(S、index1の,, index2- 1。 、1。); } } リターン をtrueに; } };
88.マージ2命じた配列
図2は、アレイ1、ソートされた配列内の配列の内容に追加されます。
クラス解決{ パブリック: ボイドマージ(ベクトル< INT >&nums1、INT M、ベクトル< INT >&nums2、int型N){ ため(INT J = 0 ; J <nであり、j ++ ){ nums1 [J + M] = nums2 [J]。 } ソート(nums1.begin()、nums1.end())。 } }。