package question;import java.util.Arrays;public class Question189 {public static void main(String[] args) {//[1,2,3,4,5,6,7] 和 k = 3int[] nums = new int[]{-1,-100,3,99};int k = 2;new Question189().rotate(nums, k);for (int num : nums) {System.out.println(num);}}public void rotate(int[] nums, int k) {int[] tmp = Arrays.copyOf(nums, nums.length);for (int i = 0; i < tmp.length; i++) {nums[(i + k) % nums.length] = tmp[i];}}public void rotate2(int[] nums, int k) {if (nums == null || nums.length <= 0) return;int x = 0;int cnt=0;while (cnt<nums.length) {int f=x;int tmp=nums[x];while (true) {x=(x+k)%nums.length;int t=nums[x];nums[x]=tmp;tmp=t;cnt++;if (f==x) break;}x++;}}public void rotate3(int[] nums, int k) {k%=nums.length;int count=gcd(k, nums.length);for (int i = 0; i < count; i++) {int x=i;int tmp=nums[x];do {x=(x+k)%nums.length;int t=nums[x];nums[x]=tmp;tmp=t;} while (x!=i);}}private int gcd(int a,int b){return b==0?a:gcd(b,a%b);}public void rotate4(int[] nums, int k) {k%=nums.length;re(nums, 0, nums.length-1);re(nums, 0, k-1);re(nums, k, nums.length-1);}private void re(int[] nums, int from, int to) {while (from<to) {int t=nums[from];nums[from]=nums[to];nums[to]=t;from++;to--;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。