scala算法练习–数组旋转
O(1)空间复杂度及其验证算法
def rotate(nums: Array[Int], k: Int): Unit = {
val len=nums.length
if(len==1 || k==0 || len==k) return
var i=0
var j=0
var index=j
var temp =nums(index)
do {
val next=nums((index+k)%len)
nums((index+k)%len)=temp
index=(index+k)%len
if(index==j){
index+=1
j=index
temp =nums(index)
}else{
temp=next
}
i+=1
}while(i<len)
}
def rotate1(nums: Array[Int], k: Int):Array[Int]={
val newNums=new Array[Int](nums.length)
var index=0
nums.foreach{x=>
newNums((index+k)%nums.length)=x
index+=1
}
newNums
}
for(x<- 1 to 100000 ) {
for(y<- 1 until x ){
val arr=(0 to x).toArray
println("========================================")
println(s"x=${x}:::y=${y}")
val arr1=rotate1(arr,y)
println(arr1.mkString(","))
rotate(arr,y)
println(arr.mkString(","))
if(arr.mkString!=arr1.mkString){
throw new Exception
}
println("========================================")
}