首页 > 其他分享 >leetcode面试经典150题- 189. 轮转数组

leetcode面试经典150题- 189. 轮转数组

时间:2024-08-13 17:06:03浏览次数:15  
标签:150 nums int ++ len -- length 189 leetcode

 

https://leetcode.cn/problems/rotate-array/description/?envType=study-plan-v2&envId=top-interview-150

 

 

go

package leetcode150

import "testing"

func TestRotate(t *testing.T) {
    nums := []int{1, 2}
    rotate2(nums, 3)
    for _, num := range nums {
        print(num)
        print(" ")
    }
}

func rotate(nums []int, k int) {
    if len(nums) == 0 {
        return
    }
    k = k % len(nums)
    nums2 := make([]int, k)
    i := 0
    for j := len(nums) - k; j < len(nums); j++ {
        nums2[i] = nums[j]
        i++
    }
    i = len(nums) - k - 1
    j := len(nums) - 1
    for i >= 0 {
        nums[j] = nums[i]
        i--
        j--
    }
    i = 0
    for i < k {
        nums[i] = nums2[i]
        i++
    }
}

func rotate2(nums []int, k int) {
    if len(nums) == 0 {
        return
    }
    k = k % len(nums)

    for k > 0 {
        lastVal := nums[len(nums)-1]
        for i := len(nums) - 1; i > 0; i-- {
            nums[i] = nums[i-1]
        }
        nums[0] = lastVal
        k--
    }
}

java

package leetcode150;

import org.junit.Test;

public class a6_189_rotate {

    @Test
    public void test() {
        int[] nums = {1,2,3,4,5,6,7};
        rotate(nums, 3);
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i] + " ");
        }
    }

    public void rotate(int[] nums, int k) {
        if (nums.length == 0) return;
        k %= nums.length;
        int[] nums2 = new int[k];
        int i = nums.length - k;
        int j = 0;
        for (; i < nums.length; i++) {
            nums2[j] = nums[i];
            j++;
        }

        i = nums.length - 1;
        while (i - k >= 0) {
            nums[i] = nums[i - k];
            i--;
        }

        j = 0;
        while (j < k) {
            nums[j] = nums2[j];
            j++;
        }
    }

    // 超时
    public void rotate2(int[] nums, int k) {
        if (nums.length == 0) return;
        k %= nums.length;
        while (k > 0) {
            int lastVal = nums[nums.length - 1];
            for (int i = nums.length - 1; i > 0; i--) {
                nums[i] = nums[i - 1];
            }
            nums[0] = lastVal;
            k--;
        }
    }
}

 

标签:150,nums,int,++,len,--,length,189,leetcode
From: https://www.cnblogs.com/MoonBeautiful/p/18357361

相关文章

  • 代码随想录算法训练营第 42 天 |LeetCode 188.买卖股票的最佳时机IV LeetCode309.最佳
    代码随想录算法训练营Day42代码随想录算法训练营第42天|LeetCode188.买卖股票的最佳时机IVLeetCode309.最佳买卖股票时机含冷冻期LeetCode714.买卖股票的最佳时机含手续费目录代码随想录算法训练营前言LeetCode188.买卖股票的最佳时机IVLeetCode309.最佳买卖......
  • 四数相加2 | LeetCode-454 | 哈希集合 | Java详细注释
    ......
  • 长度最小的子数组 | LeetCode-209 | 双指针+滑动窗口 | 前缀和+二分查找 | Java详细注
    ......
  • leetcode递归(LCR 141. 训练计划 III)
    前言经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。递归大部分题解可以使用迭代方式求解,使用递归是为了熟悉递归的解题思路。描述给定一个头节点为 head 的单链表用于记录一系列核心肌群训练编号,请将该系列训练编号 倒序 记录......
  • leetcode面试经典150-26. 删除有序数组中的重复项
    https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150 packageleetcode150import"testing"funcTestRemoveDuplicates(t*testing.T){nums:=[]int{0,0,1,1,1,......
  • leetcode刷题笔记8.5-8.9
    刷题笔记8.5-8.9刷题顺序依照labuladong算法小抄两数之和(8.5)初始化数组:int[]num=newint<length>;int[]num={1,2,3,4};其中数组名代表指针变量,故不可以直接将数组名a赋值给数组名b错误的复制:int[]b=a;数组元素复制:假设数组nums的元素复制到numsSort中:int[]......
  • Leetcode. 11
    这个题开始之前我们首先做一个思路的分析随着这个柱子的不断的变化这个容器中的水也是会跟着相应的变大和变小的所以我们先找出这个里面的规律在每个状态下,无论长板或短板向中间收窄一格,都会导致水槽底边宽度−1​变短:若向内移动短板,水槽的短板min(h[i],h[j])......
  • 厦门国际银行一个月不到被罚1500万:屡屡违规之下,业绩也堪忧
    《港湾商业观察》施子夫 李镭近期屡屡被罚的厦门国际银行似乎走到了风口浪尖。一个月不到,厦门国际银行就因数十项违规被罚超过1500万,其合规层面的挑战可见相当严重。​一个月不到合计被罚1500万8月9日,国家金融监督管理总局泉州监管分局行政处罚信息公开表显示,厦门国际......
  • LeetCode 1834. Single-Threaded CPU
    原题链接在这里:https://leetcode.com/problems/single-threaded-cpu/description/题目:Youaregiven n​​​​​​taskslabeledfrom 0 to n-1 representedbya2Dintegerarray tasks,where tasks[i]=[enqueueTimei,processingTimei] meansthatthe i​​......
  • LeetCode 22. 括号生成 回溯写法详解
    22.括号生成22.括号生成题目来源题目分析题目难度题目标签题目限制解题思路核心算法步骤代码实现代码解读性能分析测试用例扩展讨论优化写法其他实现总结22.括号生成题目来源22.括号生成题目分析给定一个数字n,表示生成括号的对数,要求设计一个函数生成所......