首页 > 代码库 > 把一个整数数组中所有的非0整数移到左边
把一个整数数组中所有的非0整数移到左边
1、一个整数数组,把非0的整数移到左边,对整数的顺序不做要求。写一个函数实现,并返回数组的非0整数个数。不使用额外的存储。比如:
初始数组为:[ 1, 0, 2, 0, 0, 3, 4 ],处理后的数组是:[ 4, 1, 3, 2, 0, 0, 0 ],函数返回非0整数的个数4。
解答:两个指针,一个从左向右移动,一个从右向左移动。
int moveLeft(int* arr, int len){ if (arr == NULL || len <= 0) return -1; int i = 0; int j = len - 1; while (i <= j) { if (arr[i] != 0) { if (arr[j] == 0) { j--; } i++; } else { if (arr[j] != 0) { arr[i] = arr[j]; arr[j] = 0; i++; } j--; } } return i;}
2、假设数组长度为N,有M个0,需要多少次交换。
min(M, N-M)
把一个整数数组中所有的非0整数移到左边
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。