scala算法练习--数组旋转

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("========================================")
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值