Advertisement
GokulDeep

PermLex

May 26th, 2024
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.94 KB | None | 0 0
  1. package com.gokul.demo.InProgress;
  2.  
  3. public class PermutationLexi {
  4.  
  5.     public static void main(String[] args) {
  6.         getPermutation(4, 10);
  7.     }
  8.  
  9.     // public static List<List<Integer>> r = new LinkedList<>();
  10.     public static String s = "";
  11.  
  12.     public static String getPermutation(int n, int k) {
  13.         int[] nums = generateArray(n);
  14.         backtrack(nums, 0, k);
  15.         // System.out.println(s);
  16.         return s;
  17.         // System.out.println(r);
  18.         // String s = "";
  19.         // for (int m : r.get(k - 1)) {
  20.         // s += String.valueOf(m);
  21.         // }
  22.     }
  23.  
  24.     static int c = 0;
  25.  
  26.     private static void backtrack(int[] nums, int i, int k) {
  27.  
  28.         if (i == nums.length) {
  29.             if (++c == k) {
  30.                 for (int m : nums) {
  31.                     s += String.valueOf(m);
  32.                 }
  33.                 System.out.println(s);
  34.             }
  35.         }
  36.         for (int j = i; j <= nums.length - 1; j++) {
  37.             rtRotate(nums, i, j);
  38.             backtrack(nums, i + 1, k);
  39.             ltRotate(nums, i, j);
  40.         }
  41.         // return s;
  42.  
  43.     }
  44.  
  45.     public static void rtRotate(int[] array, int start, int end) {
  46.         reverse(array, start, end);
  47.         reverse(array, start, start);
  48.         reverse(array, start + 1, end);
  49.     }
  50.  
  51.     public static void ltRotate(int[] array, int start, int end) {
  52.         reverse(array, start, start);
  53.         reverse(array, start + 1, end);
  54.         reverse(array, start, end);
  55.     }
  56.  
  57.     private static void reverse(int[] array, int start, int end) {
  58.         while (start < end) {
  59.             int temp = array[start];
  60.             array[start] = array[end];
  61.             array[end] = temp;
  62.             start++;
  63.             end--;
  64.         }
  65.     }
  66.  
  67.     public static int[] generateArray(int n) {
  68.         int[] array = new int[n];
  69.         for (int i = 0; i < n; i++) {
  70.             array[i] = i + 1;
  71.         }
  72.         return array;
  73.     }
  74. }
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement