HackerRank "Larry's Array"
2024-08-30 03:47:13
I caught the sparkle in my mind and got AC1 ! It is a great great experience !
So the basic idea: permute on 3 consecutive items doesn't change the parity of the no. of inversions. Each permutation can only remove 0 or 2 inversions. So we say "YES" when no. of inversion % 2 = = 0. And we use MergeSort to count it in O(nlgn).
ret = 0
def merge(arr1, arr2):
global ret
if not arr1: return arr2
if not arr2: return arr1
for v2 in arr2:
arr1.append(v2)
i = len(arr1) - 1
while(i > 0):
if arr1[i] < arr1[i - 1]:
arr1[i - 1],arr1[i] = arr1[i], arr1[i - 1]
i -= 1
ret += 1
else:
break
return arr1 def mergeSort(arr):
n = len(arr)
if (n < 2): return arr
return merge(mergeSort(arr[:n//2]), mergeSort(arr[n//2:])) ###
t = int(input())
for _ in range(t):
n = int(input())
arr = list(map(int, input().split()))
ret = 0
mergeSort(arr)
print("YES" if ret % 2 == 0 else "NO")
最新文章
- svn那些错误
- 用户管理 之 Linux 用户管理工具介绍
- Qt编写自定义控件二动画按钮
- 加速chrome之Vimium快捷键
- PHP5.3以上版本没有libmysql.dll,以及由此带来的困扰
- 使用 Mono.Cecil 辅助 Unity3D 手游进行性能测试
- 来自朝鲜的问候 golang入坑系列
- SQL SERVER获取信息的方法
- Java Concurrency in Practice&mdash;&mdash;读书笔记
- 前端学习之jquery(二)
- 云栖大会day2 下午
- 11款插件让你的Chrome成为全世界最好用的浏览器|Chrome插件推荐
- Linux网络管理(一):网卡驱动与Linux内核
- 5+ App开发打包指南
- 在电脑上查看小米手机连接wifi时保存的密码
- python学习 day09 (3月14日)----函数
- Unity5.6之前版本VRTK插件基础交互
- npm - 部分常用命令(笔记)
- cocos代码研究(1)Node学习笔记
- 20155330 2016-2017-2 《Java程序设计》第七周学习总结