您的位置:首页 > 其它

恢复旋转排序数组

2016-11-24 10:07 176 查看
给定一个旋转排序数组,在原地恢复其排序。

什么是旋转数组?
比如,原始数组为[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]


public class Solution {

    /**

     * @param nums: The rotated sorted array

     * @return: void

     */

    public void recoverRotatedSortedArray(ArrayList<Integer> nums) {

        // write your code

        int temp = nums.get(0);

        int i;

        for( i = 0;i<nums.size();i++){

            if(nums.get(i)<temp)//找到最小的数

                break;

        }

        if(i!=nums.size()){

        for(int j=0 ; j<i;j++)

           nums.add(nums.get(j));将前面的翻转数据加入到后面

        nums.subList(0, i).clear();//相当于执行 removeRange(int fromIndex, int toIndex)功能。但这个函数是protected状态

只供ArrayList的子类调用

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: