LeetCode 旋转数组通解

前言

本人算法比较薄弱,最近在找工作的时候也常常被算法题劝退了,寻思上一下LeetCode学习一下。
遇到了第三题的旋转数组挺有意思。
不说了,直接看题:
在这里插入图片描述
看上就是数组的顺序调转,一开始楼主也不知道怎么做,就上网偷偷看了一眼答案,寻思我也看不懂什么翻转又什么数值变换的。
在这里插入图片描述
基础比较差的我看得一头雾水,寻思我自己写一个吧。
在这里插入图片描述
所以我用了最原始的方法:
定义两个信号量temp和temp1;
先分析这个数组变换过程:

1,2,3,4,5,6,7

我们先用一个信号量temp把第一个数组元素存起来,再把第一个数组改成7,再用temp的值赋值给temp1;

此时数组变成:

7,2,3,4,5,6,7
temp=temp1=1

我们接下来再将第二个数组元素存到temp中,把第二个数组改成temp1内的内容,再将temp的值赋值给temp2;

此时数组变成:

7,1,3,4,5,6,7
temp1=2,temp=2;

接下来显而易见的变换过程就是:

7,1,2,4,5,6,7 temp=temp1=3
7,1,2,3,5,6,7 temp=temp1=4
7,1,2,3,4,6,7 temp=temp1=5
7,1,2,3,4,5,7 temp=temp1=6
7,1,2,3,4,5,6 temp=temp1=7

即信号量存放的是数组中所没有的元素;第一次遍历和后面的遍历有所不同。所以写一个判断语句。

附上代码:

class Solution {
    public void rotate(int[] nums, int k) {
       int temp=0;
        int temp1=0;
        int size=nums.length-1;
        for( int i=0;i<k;i++){
            for(int j=0;j<=size;j++){
                if(j==0){
                temp=nums[j];
                nums[j]=nums[size-j];
                temp1=temp;}
                else{
                temp=nums[j];
                    nums[j]=temp1;
                    temp1=temp;
                    }
            }
        }
    }
}

测试出来:
执行时间好慢。。。。。
在这里插入图片描述
不过能自己做出来感觉还是非常不错的!!希望闭关出来不会饿死吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值