• 递归实现煎饼排序


    给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序。我们要执行零次或多次煎饼翻转(按顺序一次接一次地进行)以完成对数组 A 的排序。

     1 /*
     2 * https://leetcode-cn.com/problems/pancake-sorting/
     3 * 
     4 * 给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序。
     5 * 我们要执行零次或多次煎饼翻转(按顺序一次接一次地进行)以完成对数组 A 的排序。
     6 * 返回能使 A 排序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 * A.length 范围内的有效答案都将被判断为正确。
     7 */
     8 import java.util.ArrayList;
     9 import java.util.List;
    10 
    11 public class code969_PancakeSorting
    12 {
    13     List<Integer> res = new ArrayList<>();
    14     public List<Integer> pancakeSort(int[] A) {
    15         sort(A, A.length);
    16         System.out.println(res);
    17         return res;
    18     }
    19     public void sort(int[] nums, int n){
    20         if(n == 1)
    21             return;
    22         int maxNum = 0;
    23         int maxNumIndex = 0;
    24         for(int i = 0; i < n; i++){
    25             if(nums[i] > maxNum){
    26                 maxNum = nums[i];
    27                 maxNumIndex = i;
    28             }
    29         }
    30         reverse(nums, 0, maxNumIndex);
    31         res.add(maxNumIndex + 1);
    32         reverse(nums, 0, n - 1);
    33         res.add(n);
    34         sort(nums, n - 1);
    35     }
    36     public void reverse(int[] nums, int start, int end){
    37         while(start < end){
    38             int temp = nums[start];
    39             nums[start++] = nums[end];
    40             nums[end--] = temp;
    41         }
    42     }
    43     public static void main(String[] args){
    44         code969_PancakeSorting pancakeSorting = new code969_PancakeSorting();
    45         pancakeSorting.pancakeSort(new int[]{3,2,4,1});
    46         //4 2 3 1 3
    47         //1 3 2 4 4
    48         //3 1 2 4 2
    49         //2 1 3 4 3
    50         //2 1 3 4 1
    51         //1 2 3 4 2
    52     }
    53 }
  • 相关阅读:
    正则表达式去掉文件路径中的特殊字符
    用MD5加密字符串
    FTP响应码
    简述MD5校验文件
    SQLServer存储过程帮助类
    MySql数据库帮助类:DbHelperMySQL
    SQLServer数据库帮助类:DbHelperSQL
    基于Window10搭建android开发环境
    Ubuntu14.04搭建Android O编译环境
    Sublime text 3搭建Python开发环境及常用插件安装
  • 原文地址:https://www.cnblogs.com/Z-D-/p/12639909.html
Copyright © 2020-2023  润新知