首页 > 试题广场 >

牛牛的交换排序

[编程题]牛牛的交换排序
  • 热度指数:283 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛有一个数组和一个数组,两个数组长度一样。其中,数组中只含有0和1这两种元素。
牛牛现在想对数组进行排序(从小到大),只不过牛牛只能通过不断地对数组中的元素进行交换操作来完成他的排序,具体交换操作如下:
当且仅当才可以交换,同时,交换的时候也会相应的发生交换。
牛牛是一个很懒的人,如果他觉得不能够排序成功(从小到大),那么他就放弃了。
现在牛牛想请你写一个程序,给定一个数组和一个数组,返回牛牛是否可以排序成功(从小到大),如果可以,返回"YES",反之,返回"NO"。

示例1

输入

3,[1,2,3],[0,0,0]

输出

"YES"

说明

a数组已是升序,不需要再排序,返回"YES"。 
示例2

输入

3,[3,2,1],[0,0,0]

输出

"NO"

说明

a数组非升序且不满足交换操作要求,无法完成排序,返回"NO"。 

备注:
,保证a[i]两两不同
头像 KevinMcblack
发表于 2020-06-30 21:17:38
题解:我们可以对样例进行分析,发现原本为升序情况,返回YES即可,但是倘若是倒序,如果b数组中都是0或都是1情况下,是不能进行操作的,所以返回NO。那么我们可以再模拟几组用例,查看是否呈现出某种规律:a,b -> a,b res[3 2 1],[1 0 0] -> [1 2 3],[0 展开全文

问题信息

难度:
3条回答 1256浏览

热门推荐

通过挑战的用户