<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一.題目描述 ![](https://box.kancloud.cn/2016-01-05_568bb5e97947b.jpg) ## 二.解題技巧 這道題和Remove Duplicates from Sorted Array類似,不同的是這里只要刪除值等于給定值的元素即可,可以采用和前面的題相同的做法:可以將原來的數組看作一個棧,設定一個棧頂指針,在對數組進行遍歷的時候,判斷元素是否等于給定值,如果等于,則直接進行數組的下一個元素,如果不等于,則將該元素放入到棧頂,然后更新指針并處理數組的下一個元素。之所以能這么做,是因為我們在遍歷過程中,對于數組元素的訪問的下標總是不小于棧頂指針的,因此,可以將原來的數組直接當作一個棧來使用,這樣就能做到in-place處理了。 這道題相對比較簡單,也沒有多少邊界條件要考慮,是一道練手的題。這里在進行刪除后數組的元素的個數的統計的時候,有一個技巧,即棧頂指針就已經說明了數組中元素的個數了,因此,可以直接返回棧頂指針就可以了(這里的棧頂指針是用數組的下標表示的)。當然,也可以統計等于給定值的元素的個數,然后用原來的數組個數減去該值就可以得到新的數組的值了。 ## 三.示例代碼 ~~~ #include <iostream> using namespace std; class Solution { public: int RemoveElement(int A[], int n, int Elem) { int num = 0; for (int i = 0; i < n; i++) { if (A[i] != Elem) A[num++] = A[i]; // 支持in place運算 } return num; } }; ~~~ 測試代碼: ~~~ #include "Solution.h" #include <algorithm> int main() { int Elem = 5; // 刪除數組內數值為5的元素 int length = 100; // 數組大小 int A[100]; for (int i = 0; i < length; i++) A[i] = rand() % 20 - 10; sort(A, A + length); // 便于觀察,對輸入數組先進行排序 cout << "輸入數組長度為:" << length << endl; cout << "輸入數組為:" << endl; for (int j = 0; j < 100; j++) cout << A[j] << " "; cout << endl << endl; cout << "刪除數值為:" << Elem << "的元素" << endl << endl; Solution s; int result = s.RemoveElement(A, 100, Elem); cout << "輸入數組長度為:" << result << endl; cout << "輸出數組為:" << endl; for (int k = 0; k < result; k++) { cout << A[k] << " "; } cout << endl; getchar(); return 0; } ~~~ 一個測試結果: ![](https://box.kancloud.cn/2016-01-05_568bb5e9904aa.jpg) ## 四.體會 這道題實現簡單,沒有很嚴格的邊界條件,可以尋求別的解決方式。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看