LeetCode移动零
LeetCode移動(dòng)零
給定一個(gè)數(shù)組 nums,編寫(xiě)一個(gè)函數(shù)將所有 0 移動(dòng)到數(shù)組的末尾,同時(shí)保持非零元素的相對(duì)順序。
說(shuō)明:
- 必須在原數(shù)組上操作 ,不能拷貝額外的數(shù)組 。
- 盡量減少操作次數(shù)。
void moveZeroes(int* nums, int numsSize){ int count = 0, length = numsSize-1; while (length >= 0) { if(nums[length] == 0) { count++;//計(jì)數(shù) int temp = length; while (temp < numsSize-1) { nums[temp] = nums[temp+1]; temp++; } } length--; } while (count >0) { nums[numsSize-count] = 0; count--; }}官方答案:雙指針?lè)?/p>
思路及解法
使用雙指針 ,左指針指向當(dāng)前已經(jīng)處理好的序列的尾部,右指針指向待處理序列的頭部。
右指針不斷向右移動(dòng),每次右指針指向非零數(shù)