数组旋转函数2

题 396旋转数组

在这里插入图片描述

解法

在这里插入图片描述在这里插入代码片

解法

在这里插入图片描述

C++

class Solution {
public:
//使用一个新数组来存放
    void rotate(vector<int>& nums, int k) {
        int n=nums.size()
        //数组newArr
        vector<int>newArr(n);
        arr=[]
        for(int i=0;i<l;++i){
            b=(i+k)%n
            newArr[b]=nums[i]
    }
    //拷贝旧数组到新数组上
    nums.assign(newArr.begin(),newArr.end())
    }
};

Python

class Solution(object):
    def rotate(self, nums, k):
        b=len(nums)
        nums=[0]*k+nums
        n=len(nums)
        left=0
        right=n-k
        for i in range(k):
            nums[left],nums[right]=nums[right],nums[left]
            left+=1
            right+=1
        nums=nums[:b]
        print(nums)
        return nums

396 旋转函数

题目

在这里插入图片描述

解法

数学公式发现规律迭代
在这里插入图片描述

Python

#自己写的
import numpy
class Solution(object):
    def maxRotateFunction(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        k=len(nums)
        F=[]
        for i in range(0,k):
            nums1=nums
            if i !=0:
                nums1=[0]*i+nums
                left=0
                right=k
                for j in range(i):
                    nums1[left],nums1[right]=nums1[right],nums1[left]
                    left+=1
                    right+=1
            nums1=nums1[:k]
            b=numpy.array(nums1)
            a=numpy.array(range(0,k))
            c=sum(a*b)
            F.append(c)
        print(F,max(F))
        return max(F)


c++

在这里插入代码片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值