【递归】969. 煎饼排序

969. 煎饼排序

解题思路

  • 寻找最大饼的索引: 遍历整个数组,找到当前未排序部分中最大的煎饼的索引。
  • 第一次反转: 将最大的煎饼反转到最上面。
  • 第二次反转: 将最大的煎饼反转到最下面。
  • 递归调用: 对剩余的未排序煎饼进行递归排序,直到只剩一个煎饼
class Solution {
   
    List<Integer> res = new LinkedList<>();// 记录反转操作序列

    public List<Integer> pancakeSort(int[] arr) {
   
        sort(arr,arr.length);
        return res;
    }

    void sort(int[] cakes,int n){
   
        if(n == 1) return;

        // 寻找最大饼的索引
        int maxCake = 0;
        int maxCakeIndex = 0;

        for(int i= 0; i < n; i++){
   
            if(cakes[i] > maxCake){
   
                maxCakeIndex = i;
                maxCake = cakes[i];
            }
        }

        // 进行第一次反转 将最大的饼干反转到最上面
        reverse(cakes,0,maxCakeIndex);
        res.add(maxCakeIndex + 1);

        // 第二次反转 将最大的饼干  反转到最下面
        reverse(cakes,0,n - 1);
        res.add(n);

        // 递归调用
        sort(cakes,n - 1);
    }

    void reverse(int[] arr,int i,int j){
   
        while(i < j){
   
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }
}

相关推荐

  1. 969. 煎饼排序

    2024-02-23 10:38:02       46 阅读
  2. 归并排序(实现)

    2024-02-23 10:38:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 10:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 10:38:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 10:38:02       82 阅读
  4. Python语言-面向对象

    2024-02-23 10:38:02       91 阅读

热门阅读

  1. python opencv实现车牌识别

    2024-02-23 10:38:02       51 阅读
  2. 【Docker镜像】Node.js项目之使用Dockerfile构建镜像

    2024-02-23 10:38:02       47 阅读
  3. 开源计算机视觉库OpenCV详解

    2024-02-23 10:38:02       44 阅读
  4. Spark中写parquet文件是怎么实现的

    2024-02-23 10:38:02       53 阅读
  5. 主流开发语言和开发环境介绍

    2024-02-23 10:38:02       48 阅读
  6. 主流的开发语言和开发环境介绍

    2024-02-23 10:38:02       52 阅读
  7. pyspark统计指标计算

    2024-02-23 10:38:02       50 阅读