leetcode陣列練習題2:283. 移動零
給定一個陣列 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:
必須在原陣列上操作,不能拷貝額外的陣列。
儘量減少操作次數。
通過次數277,991提交
陣列
雙指標 解法
這是之前寫的O(n) 的 時間複雜度解法,空間複雜度我忘了咋算了今晚回去補補
- 空指標判斷,和陣列為空退出
- 這題不需要排序只需要將非零元素與等零元素交換位置即可。
雙指標體現在哪裡呢,這裡面有 i 和 j 兩個變數, i 是隨著迴圈自增 而 j 是隨著滿足條件自增,就構成了快慢兩個指標;交換的時候會出現 i 和 j 相等且不等於零的時候,比如 {1,1,1,0}; 程式還是會進入if判斷執行浪費時間,能否避免這種情況呢 ?
目前我認為不能,因為不能確定 0 出現的位置。
void moveZeroes(int* nums, int numsSize)
{
if(nums==NULL || numsSize==0)
return;
int j=0;
for(int i = 0;i<numsSize;i++)
{
if(nums[i]!=0)
{
int temp = nums[i];
nums[i] = nums[j];
nums[j++] = temp;
}
}
}
相關文章
- leetcode 283. 移動零(簡單)LeetCode
- 283. 移動零
- 力扣-283. 移動零力扣
- 陣列練習題陣列
- JAVA 陣列 練習Java陣列
- leetcode:面試題 01.08. 零矩陣(陣列,中等)LeetCode面試題矩陣陣列
- 二維陣列練習陣列
- LeetCode每日一題: 移動零(No.283)LeetCode每日一題
- Java學習之陣列練習Java陣列
- LeetCode:移動零(java)LeetCodeJava
- LeetCode刷題—陣列LeetCode陣列
- 六,陣列筆記及相關練習題大全陣列筆記
- 笨辦法學C 練習34:動態陣列陣列
- leetcode_283. 移動零LeetCode
- leetcode題解(陣列問題)LeetCode陣列
- 2-7 陣列:動態陣列陣列
- 指標陣列練習排列字串指標陣列字串
- Java學習筆記——陣列練習(七)Java筆記陣列
- 程式練習題(2)
- LeetCodeHot100 283. 移動零 11. 盛最多水的容器 42. 接雨水 15. 三數之和LeetCode
- 習題8-3 陣列迴圈右移 及 練習7-8 方陣迴圈右移陣列
- 演算法學習-零子陣列,最大連續子陣列演算法陣列
- 3186 佇列練習 2佇列
- 演算法題-移動零演算法
- (合併 重疊陣列)練習容器的用法陣列
- NumPy 學習(2): 陣列的操作陣列
- 283. Move Zeroes--LeetCode RecordLeetCode
- leetcode:462. 最少移動次數使陣列元素相等 II(數學,中等)LeetCode陣列
- Java陣列小練筆Java陣列
- 2020/11/17·Leetcode·移動零LeetCode
- 樹狀陣列模板+習題集陣列
- C的二維陣列(習題)陣列
- 笨辦法學C 練習8:大小和陣列陣列
- 動態規劃練習題動態規劃
- 程式設計假期練習題--2程式設計
- LeetcodePractice-陣列LeetCode陣列
- 二維陣列和函式綜合程式設計練習陣列函式程式設計
- 【Leetcode刷題篇】leetcode152 乘積最大陣列LeetCode陣列