美文网首页
恢复反转的有序数组

恢复反转的有序数组

作者: studyever | 来源:发表于2019-07-15 11:13 被阅读0次
算法描述

给定一个翻转过的有序数组,输出原来的有序数组,例: [3, 4, 5, 1, 2] --> [1, 2, 3, 4, 5], [5, 6, 1, 2, 3, 4] --> [1, 2, 3, 4, 5, 6]

解题思路

找到数组翻转的位置,发现左右两边的数组都是有序的,把左右两边的数组逆序得到了一个逆序的数组,再把该数组逆序即可得到升序的数组

代码
public class Solution {
    /**
     * @param nums: An integer array
     * @return: nothing
     */
    public void recoverRotatedSortedArray(List<Integer> nums) {
        // write your code here
        int n = nums.size();
        List<Integer> result = new ArrayList();
        if (n <= 0) return; 
          // 找到逆序的位置
          int i = 0;
        for (i = 0; i < n - 1; i++) {
            // 
            if(nums.get(i) > nums.get(i+1)) {
                break;
            }
        } 
        if (i == (n - 1)) {
            result = nums;
        }
        else {
             result = reverseNums(nums, 0, i);
             result = reverseNums(nums, i + 1, n - 1);
             result = reverseNums(nums, 0, n - 1);
        }
        System.out.println(result);
    }
    
    public List<Integer> reverseNums(List<Integer> nums, int low, int high) {
        while(low < high) {
            int temp = nums.get(low);
            nums.set(low, nums.get(high));
            nums.set(high, temp);
            low++;
            high--;
        }
        return nums;
    }
}
总结

该思想也可以用于字符串、句子的翻转,对每一个组成部分逆序然后再整体逆序。

相关文章

  • 恢复反转的有序数组

    算法描述 给定一个翻转过的有序数组,输出原来的有序数组,例: [3, 4, 5, 1, 2] --> [1, 2...

  • 算法小计

    字符串的反转 将两个有序数组合成一个新的有序数组

  • 2020-10-28

    快排 链表反转 链表反转 二叉树非递归实现 按层排序 二叉树深度 合并有序数组 二分查找 有序数组 查找 楼梯问题

  • 算法

    字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组中的中位数

  • iOS面试之算法大全

    算法 算法内容如下: 字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中...

  • iOS面试之算法模块

    算法 算法内容如下: 字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中...

  • 算法

    字符串反转 给定字符串"hello, world",实现将其反转。 链表反转 有序数组合并 Hash算法 在一个字...

  • 2018 iOS面试题---算法相关

    字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中的中位数 一、字符串反...

  • 算法相关

    字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中的中位数 一、字符串反...

  • 算法相关

    字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中的中位数 一、字符串反...

网友评论

      本文标题:恢复反转的有序数组

      本文链接:https://www.haomeiwen.com/subject/dipgkctx.html