leetcode:283 Move Zeroes-每日编程第五题

来源:互联网 发布:阿里云 红岭创投 编辑:程序博客网 时间:2024/05/24 16:16

Move Zeroes

Total Accepted: 36621 Total Submissions: 86626 Difficulty: Easy

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].

Note:

1.You must do this in-place without making a copy of the array.

2.Minimize the total number of operations. 


思路:

维持两个int型下标(也可理解为指针)

1).index_,index_1;,递增index_寻找下一个0,令index_1为index_+1,搜寻index_之后的第一个非0值,交换他们的位置。

2).重复1).直到index_搜寻到数组末尾。

 class Solution { public:     void moveZeroes(vector<int>& nums) {         int size = nums.size();         int index_ = 0;         while(index_ < size){             if(nums[index_]!=0){                 index_++;             }else{                 int index_1=index_+1;                 while(index_1<size&&nums[index_1]==0){                     index_1++;                 }                 if(index_1<size){                     nums[index_]=nums[index_1];                     nums[index_1]=0;                 }else{                     break;                 }             }         }     } };


0 0
原创粉丝点击