Advertisement
satishfrontenddev4

Untitled

Jan 6th, 2024
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Given a positive integer n, find the smallest integer which has exactly the same digits existing in the integer n and is greater in value than n. If no such positive integer exists, return -1.
  3.  
  4. Input format
  5. A 32 bit integer N
  6.  
  7. Output format
  8. A single integer
  9.  
  10. Sample Input 1
  11. 12
  12.  
  13. Sample Output 1
  14. 21
  15.  
  16. Explanation
  17. There is only one number greater than 12 which is composed of 2 and 1 and it is 21.
  18.  
  19. Constraints
  20. 0<= N <= 10^9
  21. */
  22.  
  23. /**
  24.  * @param {number} n
  25.  * @return {number}
  26.  */
  27. // https://www.youtube.com/watch?v=LuLCLgMElus ; TUF
  28. function nextGreaterElementWithSameSetOfDigits(n) {
  29.      let arr=getDigits(n);
  30.      let length=arr.length;
  31.      if(length<=1)
  32.      return -1;
  33.      let index1,index2;
  34.      let i=length-2,j;
  35.      while(i>=0&&arr[i]>=arr[i+1]){
  36.          i--;
  37.      }
  38.      index1=i;
  39.      if(index1>=0){
  40.          i=length-1;
  41.         while(i>=0&&arr[i]<=arr[index1]){
  42.             i--;
  43.         }
  44.         index2=i;
  45.         [arr[index1],arr[index2]]=[arr[index2],arr[index1]];
  46.      }
  47.      else
  48.      return -1;
  49.      
  50.      // reverse after index1+1;
  51.      i=index1+1;
  52.      j=length-1;
  53.      while(i<j){
  54.          [arr[i],arr[j]]=[arr[j],arr[i]];
  55.          i++;
  56.          j--;
  57.      }
  58.      return parseInt(arr.join(''));
  59.      
  60.  
  61. }
  62. /*
  63. function nextGreaterElementWithSameSetOfDigits(n) {
  64.     let arr=getDigits(n);
  65.     // console.log(arr);// order  of digit should be inPlace
  66.     let i,j;
  67.     let length=arr.length;
  68.     let hasFound=false;
  69.     if(n<10)
  70.     return -1;
  71.     for(let i=length-1;i>=0;i--){
  72.         for(let j=i-1;j>=0;j--){
  73.             if(arr[i]>arr[j]){
  74.                 [arr[i],arr[j]]=[arr[j],arr[i]];
  75.                 hasFound=true;
  76.                 break;
  77.             }
  78.         }
  79.         if(hasFound)
  80.             break;
  81.     }
  82.     if(!hasFound)
  83.     return -1;
  84.     return parseInt(arr.join(''));
  85. }
  86. */
  87.  
  88. function main() {
  89.     const n = parseInt(readLine(), 10);
  90.     console.log(nextGreaterElementWithSameSetOfDigits(n));
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement