396. Rotate Function

题目大意:给定数组A,长度为ASize,分别用【0~ASize-1】作为各项的系数,求最大值。例子比较明了

A = [4, 3, 2, 6]

F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4 + 18 = 25
F(1) = (0 * 6) + (1 * 4) + (2 * 3) + (3 * 2) = 0 + 4 + 6 + 6 = 16
F(2) = (0 * 2) + (1 * 6) + (2 * 4) + (3 * 3) = 0 + 6 + 8 + 9 = 23
F(3) = (0 * 3) + (1 * 2) + (2 * 6) + (3 * 4) = 0 + 2 + 12 + 12 = 26

So the maximum value of F(0), F(1), F(2), F(3) is F(3) = 26.
大致思路:

【暴力】分别结算每个位置的F[i],分别比较,然后求最大值,大数据测试集合TLE。

【改进】找规律,发现F[i]-F[i+1]=Sum[0~Asize-1]-n*A[i],发现这个规律之后没有及时的运用,有点遗憾。

进一步找到F[i]-F[j]=[j-i]*Sum[0~Asize-1]-n*Sum[i~j-1];

我运用这个公式,避免了每次都计算F[i],在测试过程中,发现判断条件那里容易溢出,改为除法比较之后才通过,代码如下:

CODE:

int cal(int *a,int n,int i){
    int res=0,j;
    for(j=0;j
   
   
后面运用第一个公式,重做了一遍,代码简洁了很多。代码如下:
int maxRotateFunction(int* A, int ASize) {
    if(ASize==0) return 0;
    int res=0,sum=0,i,temp;
    for(i=0;i
     
     
      
      res) res=temp;
    }
    return res;
}
     
     


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您需要让这个代码段能够正常暂停,我来帮您修改一下。根据您提供的代码,我发现其中缺少了音频对象的创建和设置,我将在修改中加入这部分内容。下面是修改后的代码: ``` Page({ data: { isPlaying: false, animation: {}, audio: null }, onLoad: function () { // 初始化帧动画 const animation = wx.createAnimation({ duration: 1000, timingFunction: 'linear', }) this.animation = animation // 初始化音频对象 const audio = wx.createInnerAudioContext() audio.src = 'your-audio-source' // 填写你的音频源地址 this.setData({audio}) // 监听音频播放结束事件 audio.onEnded(() => { this.setData({ isPlaying: false, animation: animation.rotate(0).export() }) }) }, togglePlay: function () { const isPlaying = this.data.isPlaying const animation = this.animation const audio = this.data.audio if (isPlaying) { // 暂停播放 audio.pause() this.setData({ isPlaying: false, animation: animation.rotate(0).export() }) } else { // 开始播放 audio.play() this.setData({ isPlaying: true, animation: animation.rotate(360).export() }) } }, handleListButtonClick: function () { // 处理歌曲列表按钮点击事件 console.log('歌曲列表按钮点击') }, handlePlayPauseButtonClick: function () { // 处理播放/暂停按钮点击事件 this.togglePlay() }, handleNextButtonClick: function () { // 处理下一首按钮点击事件 console.log('下一首按钮点击') }, handlePrevButtonClick: function () { // 处理上一首按钮点击事件 console.log('上一首按钮点击') } }) ``` 在修改后的代码中,我加入了音频对象的创建和设置,您只需要将 'your-audio-source' 替换为您自己的音频源地址即可。我还在onLoad函数中监听了音频播放结束事件,当音频播放结束时,将isPlaying状态设置为false,同时将动画对象恢复到初始状态。在togglePlay函数中,我修改了播放和暂停的逻辑,使用audio.play()和audio.pause()方法来控制音频的播放和暂停,并在数据更新时,将动画对象的状态也更新到界面中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值