谷歌seo网站推广,app开发公司上市,网络工程好找工作吗,国内做网站建设最好的公司是1、题目#xff1a;
给定一个整数数组 nums#xff0c;将数组中的元素向右轮转 k 个位置#xff0c;其中 k 是非负数。 2、分析特点#xff1a; 轮转 取模运算 我们可以使用额外的数组来将每个元素放至正确的位置。用 n 表示数组的长度#xff0c;我们遍历原数组
给定一个整数数组 nums将数组中的元素向右轮转 k 个位置其中 k 是非负数。 2、分析特点 轮转 取模运算 我们可以使用额外的数组来将每个元素放至正确的位置。用 n 表示数组的长度我们遍历原数组将原数组下标为 i 的元素放至新数组下标为 (ik) mod n 的位置最后将新数组拷贝至原数组即可。 3、代码 public void rotate(int[] nums, int k) {int n nums.length;int[] newArr new int[n];for (int i 0; i n; i) {newArr[(i k) % n] nums[i];}System.arraycopy(newArr, 0, nums, 0, n);}4、复杂度分析 时间复杂度 O(n)其中 n 为数组的长度。空间复杂度 O(n)。 5、总结
轮转、循环 k 步要想到取模运算另外需要一个新数组作为结果数组是因为如果我们不使用额外数组我们直接将每个数字放至它最后的位置这样被放置位置的元素会被覆盖从而丢失所以需要一个新数组作为结果数组最后拷贝回去原数组。 如果本文对你有帮助的话记得给一乐点个赞哦感谢