zoukankan      html  css  js  c++  java
  • 39. recover rotated sorted array恢复旋转排序数组

    一句话思路:从左边开始的三步翻转法

    一刷报错:

    1. 不理解start.end是位置随机定义的。i,j是临时变量,为start,end服务
    2. nums.size()区别于nums.length:用于范形变量。作用于一堆。但是如果都是从0开始,-1的原理相同
    3. index可以在括号里定义
    4. if (nums.get(index) > nums.get(index + 1)),不是index++,前面也会变
    5. set是一个方法,不能直接用set,必须用nums.set
    6. index指向的前一个元素比较大的时候,才要替换

    风格上:

    1. 一次定义一个变量:int a; 换行; int b

    总结:start.end是位置随机定义的,什么地方都有可能是start.end

    用到的English数据结构,trick or not:array arraylist(因为无序就没用二分法)

    时间复杂度n:最多每个数挪一次,空间复杂度1:数组存储,所需的空间没变

    public class Solution {
        /*
         * @param nums: An integer array
         * @return: nothing
         */
            // write your code here
            //reverse function
            private void reverse(List<Integer> nums, int start, int end) {
                int i;
                int j;
                for (i = start, j = end; i < j; i++, j--) {
                    int temp = nums.get(i);
                    nums.set(i, nums.get(j));
                    nums.set(j, temp);
                }
            }
            
            public void recoverRotatedSortedArray(List<Integer> nums) {
                for (int index = 0; index < nums.size() - 1; index++) {
                    if (nums.get(index) > nums.get(index + 1)) {
                    reverse(nums, 0 , index);
                    reverse(nums, index + 1, nums.size() - 1);
                    reverse(nums, 0 , nums.size() - 1); 
                    }
                }
                return;
            }
        }
    View Code
  • 相关阅读:
    weblogic部署应用程序(转)
    Eclipse配置weblogic 10(转)
    设计模式之四:抽象工厂(披萨店生产披萨模拟流程)
    设计模式之七:适配器模式(火鸡转换成鸭子)
    ES6Array的扩展方法
    JavaScript闭包
    JavaScript函数进阶
    古龙语录
    JavaScript递归
    ES6let和const
  • 原文地址:https://www.cnblogs.com/immiao0319/p/7898468.html
Copyright © 2011-2022 走看看