题 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++
在这里插入代码片