把0放到数组尾部应该是双指针,一个头一个尾同时往中间走,如果a[i] == 0 并且a[j] != 0 就交换 如果前面等于0后面也等于0,j--,如果前面不等于0,无论后面值为多少,前面的i就++ #include<iostream> using namespace std; const int N = 100010; int a[N]; int main(){     int n;     cin >> n;     for(int i = 0;i < n;i++ )         cin >> a[i];     int i = 0,j = n - 1;     while(i < j){         if(a[i] == 0){             if(a[j] != 0){                 swap(a[i],a[j]);                 i++;                 j--;             }             if(a[j] == 0)                 j--;         }         if(a[i] != 0) i++;     }     for(int i = 0;i < n;i++ )cout << a[i] << " ";      }
点赞 2

相关推荐

不愿透露姓名的神秘牛友
11-10 11:42
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务