频道栏目
首页 > 资讯 > Java > 正文

Java实现-恢复旋转排序数组

17-06-19        来源:[db:作者]  
收藏   我要投稿

Java实现-恢复旋转排序数组,给定一个旋转排序数组,在原地恢复其排序。

您在真实的面试中是否遇到过这个题? Yes 说明

什么是旋转数组?

  • 比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3] 样例

    [4, 5, 1, 2, 3]->[1, 2, 3, 4, 5]

    挑战

    使用O(1)的额外空间和O(n)时间复杂度

    public class Solution {
        /**
         * @param nums: The rotated sorted array
         * @return: void
         */
        public void recoverRotatedSortedArray(ArrayList nums) {
            // write your code
            int index=0;
    		int min=Integer.MAX_VALUE;
    		for(int i=0;inums.get(i)){
    				index=i;
    				min=nums.get(i);
    			}
    		}
    		reverse(nums, 0, index);
    		reverse(nums, index, nums.size());
    		reverse(nums, 0, nums.size());
        }
        private static void reverse(ArrayList nums,int from,int to){
    		for(int i=from;i<(from+to)/2;i++){
    			int left=nums.get(i);
    			int right=nums.get(to-i+from-1);
    			nums.set(i, right);
    			nums.set(to-i+from-1, left);
    		}
    	}
    }
相关TAG标签
上一篇:call()和apply()的作用和区别
下一篇:Html引入css的三种方式
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站