leetcode 189 Rotate Array

題目要求:將一個int數組向右移k步,(數組尾部元素添加到數組頭部)

tags:Array

//我的方法:開闢一個新的int[]存儲空間
	public void rotate(int[] nums, int k) {
		k=k%nums.length;
        int[] temp = new int[k];
        for(int i=0;i<k;i++){
        	temp[i] = nums[nums.length-k+i];
        }
        for(int i=nums.length-k-1;i>=0;i--){
        	nums[i+k] = nums[i];
        }
        for(int i=0;i<k;i++){
        	nums[i]=temp[i];
        }
        System.out.println(Arrays.toString(nums));
    }
	
	//別人的思路:旋轉3次,首先對兩邊數組的旋轉,接着是對整個數組的旋轉
	public void rotate2(int[] nums, int k) {
		k=k%nums.length;
		reverse(nums, 0, nums.length-k-1);
		reverse(nums, nums.length-k, nums.length-1);
		reverse(nums, 0, nums.length-1);
    }
	
	public void reverse(int[] nums, int i,int j){
		while(i<j){
			nums[i]=nums[i]+nums[j];
			nums[j]=nums[i]-nums[j];
			nums[i]=nums[i]-nums[j];
			i++;
			j--;
		}
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章