首页 > 其他分享 >数据结构:189(轮转数组)leetcode(OJ)

数据结构:189(轮转数组)leetcode(OJ)

时间:2024-08-25 17:26:10浏览次数:15  
标签:numsSize 轮转 OJ nums 99 100 189 leetcode reverse

给定一个整数数组 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:

输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释: 
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]

提示:

  • 1 <= nums.length <= 105
  • -231 <= nums[i] <= 231 - 1
  • 0 <= k <= 105

进阶:

  • 尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
  • 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?

代码如下:

void reverse(int*nums,int left,int right)
{
    while(left<right)
    {
        int tmp=nums[left];
        nums[left]=nums[right];
        nums[right]=tmp;

        left++;
        right--;
    }

    
}
void rotate(int* nums, int numsSize, int k)
{
    k= k % numsSize;//k>numSize

    //前n-k个数据逆转
    reverse(nums,0,numsSize-k-1);//4 3 2 1 5 6 7
    //后k个数据逆转
    reverse(nums,numsSize-k,numsSize-1);//4 3 2 1 7 6 5
    //整体逆转
    reverse(nums,0,numsSize-1);//5 6 7 1 2 3 4
}

标签:numsSize,轮转,OJ,nums,99,100,189,leetcode,reverse
From: https://blog.csdn.net/2303_81073778/article/details/141530742

相关文章

  • python-小理和01串(赛氪OJ)
    [题目描述]小理有一个 01 串,串中只包含 0 和 1 ,小理要把这个串划分成连续的 m 段,使得每一段至少包含一个 0 和一个 1 。小理想最大化 m ,m 最大是多少呢?输入格式:输入包含一行一个 01 串 S 。保证中至少包含一个 0 和一个 1 。输出格式:输出一行一个整......
  • Leetcode面试经典150题-72.编辑距离
    解法都在代码里,不懂就留言或者私信动态规划最经典题之一,如果写不出来,动态规划好好再学学classSolution{/**这个题是动态规划最经典的题,另一个最经典的是背包问题*/publicintminDistance(Stringword1,Stringword2){/**如果一个为0,取另外一个的长......
  • qoj8546题解补充
    题解中第二种解法并没有具体解释是如何归纳的(害笔者想了两天两夜),这里给一个证明。考虑答案为(n,n)时,只需要全取max即可,接下来我们从n往n-1归纳,接下来所有位置初始都是取max的情况1:a中的n和b中的n在同一个位置上,我们只需在这个位置上取min即可归纳到n-1,那么接下来我们钦定不会......
  • 线性dp:LeetCode674. 最长连续递增序列
    LeetCode674.最长连续递增序列阅读本文之前,需要先了解“动态规划方法论”,这在我的文章以前有讲过链接:动态规划方法论本文之前也讲过一篇文章:最长递增子序列,这道题,阅读本文的同时可以与“最长递增子序列进行对比”,这样更能对比二者的区别!LeetCode300.最长递增子序列-To......
  • [LeetCode笔记]942. 增减字符串匹配
    /*942.增减字符串匹配由范围[0,n]内所有整数组成的n+1个整数的排列序列可以表示为长度为n的字符串s,其中:如果perm[i]<perm[i+1],那么s[i]=='I'如果perm[i]>perm[i+1],那么s[i]=='D'给定一个字符串s,重构排列perm并返回它。如果有多个有效排......
  • YCOJ 001
    YC001(育才20240824模拟赛)SolutionT1恋爱入门问题:转换一下柿子:\[\sum_i^n(T_i\times(F_i-f)+B_i)=\sum_i^n(T_i\timesF_i-f\timesT_i+B_i)=\sum_i^n(a_i\timesx+b_i)\]其中\(x=f,a_i=T_i,b_i=T_i\timesF_i+B_i\)。然后我们强制\(a_i>0\)。那么柿子化成:\[\sum_i^na......
  • [LeetCode]999. 可以被一步捕获的棋子数
    可以被一步捕获的棋子数简单给定一个8x8的棋盘,只有一个白色的车,用字符'R'表示。棋盘上还可能存在白色的象'B'以及黑色的卒'p'。空方块用字符'.'表示。车可以按水平或竖直方向(上,下,左,右)移动任意个方格直到它遇到另一个棋子或棋盘的边界。如果它能够在一次移动中移......
  • LeetCode之链表类题目
    链表类题目之CPP版......
  • LeetCode-Python-1650. 二叉树的最近公共祖先 III
    给定一棵二叉树中的两个节点 p 和 q,返回它们的最近公共祖先节点(LCA)。每个节点都包含其父节点的引用(指针)。Node 的定义如下:classNode{publicintval;publicNodeleft;publicNoderight;publicNodeparent;}根据维基百科中对最近公共祖先节点......
  • 【LeetCode面试150】——36有效的数独
    博客昵称:沈小农学编程作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟!PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!......