题解 |#双指针# #数组元素处理#将0移至末尾

数组元素处理

http://www.nowcoder.com/practice/bb840c11be674d01b582847a6921d384

方法一(双指针) 1.解题思路 定义两个指针id和i,id总是指向第一个0所在位置,i指向游标所在位置,遍历数组所有元素。 i指向元素不为0,则交换i、id位置元素,同时id指针后移。 举例说明:对应数组[1,0,3,4,0,-3],id本来指向1,i指针开始也指向1,由于不等于0,交换i、id位置元素,由于在同一位置,所以数组相当于没有变化,id指针后移,此时id指向0,i指向0时,不作处理,i指向3时,交换i、id位置元素,数组变为[1,3,0,4,0,-3],同时id后移一位,仍然指向0,i指针继续遍历数组中的元素,作类似的处理,这样就会一步步将0移到数组末尾,同时,其它元素相对位置不变。

#include <iostream>
using namespace std;


int main() {
	int n;
	cin >> n;
	int * arr = new int[n];
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}

	int zero = 0;
	for (int i = 0; i < n; i++)
	{
		if (arr[i] != 0)
		{
			swap(arr[i], arr[zero]);
			zero++;
		}
	}

	for (int i = 0; i < n; i++) {
		if (i == n-1) {
			cout << arr[i] << endl;
		}
		else {
			cout << arr[i] << " ";
		}
	}

	return 0;
}
全部评论

相关推荐

好消息是活的像个人了,周末可以约会吃饭打游戏了坏消息是钱没了,当初来小红书就是为了钱啊哭笑不得😭
犯困嫌疑人:好事儿啊,取消大小周能有更多自己的时间,周末还能约对象玩,这不美滋滋?
投递小红书等公司6个岗位 > 小红书取消大小周
点赞 评论 收藏
分享
牛客840099999号:没见过这样的大厂,至少头部的肯定没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务