【leetcode】27. Remove Element(easy)
阿新 • • 發佈:2019-02-01
將指定值的元素移動到最後,並返回修改後陣列的size。元素可以無序
不知道為啥時間複雜度堪憂。程式碼確實複雜了點,也可能是題目的要求沒看懂
//27. Remove Element int removeElement(vector<int>& nums, int val) { int lastPos = 0; // 最後一個可以交換位置 距離最後一個的距離,初始為0 int len = 0; int sz = nums.size(); if (sz == 0) return 0; for (int i = 0; i < sz - lastPos; ++i) { if (nums[i] == val ) { int swapPos = sz - lastPos - 1; for (int j = swapPos; j > 0; --j) { if (nums[j] != val) { break; } else { swapPos--; } } if (swapPos <= i) return len; // 如果計算的交換的位置 在當前遍歷的位置之前,說明整個遍歷已經結束,直接返回 int temp = nums[swapPos]; nums[swapPos] = nums[i]; nums[i] = temp; lastPos = sz - swapPos; len++; } else { len++; } } return len; }