首页 > 其他分享 >leecode 189. 轮转数组

leecode 189. 轮转数组

时间:2024-01-20 12:34:35浏览次数:26  
标签:轮转 nums int 复杂度 leecode 189 change

Problem: 189. 轮转数组

目录

思路

vocal O(1)的解法,太强了, 完全想不到是咋想到的

解题方法

三次递归交换,太妙了

复杂度

时间复杂度:

\(O(\frac{3}{2}n)\)

空间复杂度:

\(O(1)\)

Code

class Solution {
public:
    void change(vector<int>& nums,int start,int end){
       while (start<end)
       {
         swap(nums[start],nums[end]);
         start++; end--;
       }
    }
    void rotate(vector<int>& nums, int k) {
      int  n=nums.size(),a=k%n;
       change(nums,0,n-1);
       change(nums,0,a-1);
       change(nums,a,n-1);
    }
};

标签:轮转,nums,int,复杂度,leecode,189,change
From: https://www.cnblogs.com/oxidationreaction/p/17976310

相关文章

  • CF1898D Absolute Beauty 题解
    Problem-D-Codeforcesemm,怎么说呢?因为想起之前那个直接去掉绝对值取最大时就是答案的影响,这题并没有想到正确做法。(或者说想到了正确做法,但是因为不知道一个性质所以要大分讨)假如原题满足\(a_i<b_i\),则我们把原题抽象成线段\((a_i,b_i)\),考虑两条线段合并时的情况:......
  • CF1895E Infinite Card Game 题解
    Solution根据贪心策略,可以发现出完一张牌后对手的出牌是固定的。同理可以算出Monocarp出完一张牌\(a\)后下一次出的牌\(to_a\)。\(a\)和\(to_a\)胜负状态相同。可以发现对所有\(a\)建\(a\toto_a\)后形成的图是内向基环树,一遍dfs即可求出答案。时间复杂度\(\m......
  • CF1899G题解
    UnusualEntertainment题目传送门题解真的不要太典,,,考虑点\(u\)是\(v\)的后代等价于\(u\)在子树\(v\)中,dfs序直接走起,变成判断是否存在\(i\)使得:\[in_x\lein_{p_i}\leout_x,l\lei\ler\]二维数点,启动!代码:#include<bits/stdc++.h>usingnamespacestd;#defi......
  • CF1899F题解
    Alex'swhims题目传送门题解构造题,感觉比G更难?可能是我不擅长构造。考虑点的度数,发现一次操作\(u,v_1,v_2\)会使\(deg_{v_1}\)减\(1\),使\(deg_{v_2}\)加\(1\),即一次操作最多减少一个叶子,那如果存在一个时刻使我们的叶子数量大于\(3\)个,下一次若问\(n-1\)则直接......
  • 189邮箱的POP、IMAP和SMTP设置教程,简单好用
    在现代社会,电子邮件已经成为人们生活中不可或缺的一部分。189邮箱作为中国电信旗下的邮箱服务,为用户提供了丰富的功能和便捷的邮件服务。为了更好地使用189邮箱,了解如何正确配置POP、IMAP和SMTP设置是至关重要的。本文将为大家详细介绍189邮箱的POP、IMAP和SMTP设置教程,以及如何简......
  • openGauss学习笔记-189 openGauss 数据库运维-常见故障定位案例-TPCC-WAL-内存
    openGauss学习笔记-189openGauss数据库运维-常见故障定位案例-TPCC-WAL-内存189.1TPCC运行时,注入磁盘满故障,TPCC卡住的问题189.1.1问题现象TPCC运行时,注入磁盘满故障,TPCC卡住,故障消除后,TPCC自动续跑。189.1.2原因分析数据库本身机制,在性能日志(gs_profile)所在磁盘满时,导致......
  • CF1896D Ones and Twos 题解
    CF1896D如果只有单次询问其实可以双指针,但是这个难以进行拓展。考虑找点性质。发现\(a_i,v\in\{1,2\}\),从值域上下手。发现若存在和为\(S\)的方案,则一定有和为\(S-2\)的方案,因为可以直接\(-2\)或\(-1-1\)。然后就变为找最大的和为奇/偶数了,因为如果最大的都不行就肯定......
  • 轮转数组
     给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例 2:......
  • CF1891D Suspicious logarithms
    Problem-D-CodeforcesSuspiciouslogarithms-洛谷结论:设\(l=2^k,r=2^{k+1}-1\),则\(g(r)-g(l)\leq1\)。因为\(g(l)\geq2\),而\(r<2l\),因此区间\([l,r]\)内最多有一个\(y^k\)。因此先枚举\(i=\log_2x\),可以得到底数不变的一个范围\([L,R]\),记\(logL=\log_......
  • [LeetCode] LeeCode703. 数据流中的第K大元素
    题目描述思路:最小堆好好领悟这个代码://将nums数组所有元素插入小根堆中for(intnum:nums){ heap.offer(num); //当小根堆的容量大于k时,就删除堆顶元素 if(heap.size()>k)heap.poll();}当heap.size()==k的时候,还是会再添加一个元素,此时堆内部会已经排好序,......