{"id":1019,"date":"2020-06-11T10:25:19","date_gmt":"2020-06-11T10:25:19","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=1019"},"modified":"2022-03-29T00:18:16","modified_gmt":"2022-03-29T00:18:16","slug":"largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/","title":{"rendered":"Largest number smaller than or equal to N and digits in non-decreasing order"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png\" alt=\"\" \/><\/p>\n<h3>Concepts Used<\/h3>\n<blockquote>\n<p>Strings<\/p>\n<\/blockquote>\n<h3>Difficulty Level<\/h3>\n<blockquote>\n<p>Medium<\/p>\n<\/blockquote>\n<h3>Problem Statement (Simplified):<\/h3>\n<blockquote>\n<p>For a number given to us, we have to print a number less than or equal to the given number, and having all digits in non-decreasing order.<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/sorting\/INCREA\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<h4>Test Case<\/h4>\n<pre><code>Input:\n1\n50\n\nOutput:\n49\n\nExplanation:\n49 is a non-decreasing number and is also less than or equal to 50.<\/code><\/pre>\n<h3>Solving Approach :<\/h3>\n<h4>Bruteforce Approach:<\/h4>\n<blockquote>\n<p>1) We traverse from a given number, <code>N<\/code> to <code>1<\/code>, and then check if the given number has all digits in non-decreasing order or not. If yes, we break the loop and print the number. If no such number is found we print <code>-1<\/code>.<\/p>\n<p>2) This approach takes <code>O(N x D)<\/code> time if the number of digits in the number is <code>D<\/code>. This approach takes longer times for larger numbers such as 10<sup>5<\/sup>, so we find a more efficient approach.<\/p>\n<\/blockquote>\n<h4>Efficient Approach:<\/h4>\n<blockquote>\n<p>1) When comparing two digits here, we can have three cases :<\/p>\n<ul>\n<li>If both are <strong>equal<\/strong>, then the maximum number possible is the number itself, as it follows the requirement.<\/li>\n<li>If the number at left is <strong>smaller<\/strong> than the right one, then also it follows our requirements, so it remains the same.<\/li>\n<li>But, If the number at left is <strong>greater<\/strong> than the right one, then it fails for our requirements. Hence, in this case, the maximum number can be achieved if we decrease the left number by 1 and set the right number to 9. <\/li>\n<\/ul>\n<p>2) But if we have the number with digits more than 2, we modify this rule. We compare all the digits from the end to start. If the left side digit is greater than the right one we decrease the left digit by 1. We note it&#8217;s index too.<\/p>\n<p>3) After all indexes have been compared to elements to their right, we take the last updated index and set all the values to it&#8217;s right to <code>9<\/code>. Hence the resultant number is our required number. <\/p>\n<\/blockquote>\n<h4>Example:<\/h4>\n<blockquote>\n<p>Lets assume given number is <code>5348<\/code>. So we iterate from second last digit to first digit. We also note <code>lastIndex<\/code> at which pattern does not follow our requirements, we initialise it by <code>-1<\/code>.<\/p>\n<p>1) <code>Index = 2<\/code> and <code>value = 4<\/code><\/p>\n<ul>\n<li>Value right to the current index is <code>8<\/code>, which is greater than current value. So pattern follows upto current index.<\/li>\n<\/ul>\n<p>2) <code>Index = 1<\/code> and <code>value = 3<\/code><\/p>\n<ul>\n<li>Value right to the current index is <code>4<\/code>, which is greater than current value. So pattern follows upto current index.<\/li>\n<\/ul>\n<p>3) <code>Index = 0<\/code> and <code>value = 5<\/code><\/p>\n<ul>\n<li>Value right to the current index is <code>3<\/code>, which is smaller than the current value. So pattern does not follows, so we decrease value of current index by 1 and set value at right to <code>9<\/code>. This makes number <code>4948<\/code>. We also note it&#8217;s index i.e. <code>lastIndex = 0<\/code>.<\/li>\n<\/ul>\n<p>Now, we have iterated whole number, we note the <code>lastIndex<\/code> if it is <code>-1<\/code> or not. In our case it is not, it&#8217;s current value is <code>0<\/code>, Which means we&#8217;ll convert all values to 9 from current index to last index. So, our final answer becomes <code>4999<\/code>.<\/p>\n<\/blockquote>\n<h3>Solutions:<\/h3>\n\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_1020 {\r\n\toverflow:hidden;\r\n\tdisplay:block;\r\n\twidth:100%;\r\n\tborder:0px solid #ddd;\r\n\tmargin-bottom:30px;\r\n\t}\r\n\r\n#tab_container_1020 .tab-content{\r\n\tpadding:20px;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n\tmargin-top: 0px;\r\n\tbackground-color:#ffffff !important;\r\n\tcolor: #000000 !important;\r\n\tfont-size:16px !important;\r\n\tfont-family: Open Sans !important;\r\n\t\r\n\t\tborder: 1px solid #e6e6e6 !important;\r\n\t}\r\n#tab_container_1020 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_1020 .wpsm_nav-tabs > li.active > a, #tab_container_1020 .wpsm_nav-tabs > li.active > a:hover, #tab_container_1020 .wpsm_nav-tabs > li.active > a:focus {\r\n\tcolor: #000000 !important;\r\n\tcursor: default;\r\n\tbackground-color: #ffffff !important;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n}\r\n\r\n#tab_container_1020 .wpsm_nav-tabs > li > a {\r\n    margin-right: 0px !important; \r\n    line-height: 1.42857143 !important;\r\n    border: 1px solid #d5d5d5 !important;\r\n    border-radius: 0px 0px 0 0 !important; \r\n\tbackground-color: #e8e8e8 !important;\r\n\tcolor: #000000 !important;\r\n\tpadding: 15px 18px 15px 18px !important;\r\n\ttext-decoration: none !important;\r\n\tfont-size: 14px !important;\r\n\ttext-align:center !important;\r\n\tfont-family: Open Sans !important;\r\n}\r\n#tab_container_1020 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_1020 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_1020 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_1020 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_1020 .wpsm_nav-tabs > li > a:hover , #tab_container_1020 .wpsm_nav-tabs > li > a:focus {\r\n    color: #000000 !important;\r\n    background-color: #e8e8e8 !important;\r\n\tborder: 1px solid #d5d5d5 !important;\r\n\t\r\n}\r\n#tab_container_1020 .wpsm_nav-tabs > li > a .fa{\r\n\r\nmargin-right:5px !important;\r\n\r\nmargin-left:5px !important;\r\n\r\n\r\n}\r\n\r\n\t\t#tab_container_1020 .wpsm_nav-tabs a{\r\n\t\t\tbackground-image: none;\r\n\t\t\tbackground-position: 0 0;\r\n\t\t\tbackground-repeat: repeat-x;\r\n\t\t}\r\n\t\t\t\r\n\r\n\r\n#tab_container_1020 .wpsm_nav-tabs > li {\r\n    float: left;\r\n    margin-bottom: -1px !important;\r\n\tmargin-right:0px !important; \r\n}\r\n\r\n\r\n#tab_container_1020 .tab-content{\r\noverflow:hidden !important;\r\n}\r\n\r\n\r\n@media (min-width: 769px) {\r\n\r\n\t#tab_container_1020 .wpsm_nav-tabs > li{\r\n\t\tfloat:left !important ;\r\n\t\t\t\tmargin-right:-1px !important;\r\n\t\t\t\t\t}\r\n\t#tab_container_1020 .wpsm_nav-tabs{\r\n\t\tfloat:none !important;\r\n\t\tmargin:0px !important;\r\n\t}\r\n\r\n\t#tab_container_1020 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1020 .wpsm_nav{\r\n\t\t\t}\r\n\r\n}\r\n\r\n\r\n\r\n@media (max-width: 768px) {\r\n\t#tab_container_1020 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1020 .wpsm_nav{\r\n\t\t\t}\r\n}\r\n\r\n\r\n\t.wpsm_nav-tabs li:before{\r\n\t\tdisplay:none !important;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\t\t\t\r\n\t\t\t\t.wpsm_nav-tabs{\r\n\t\t\tmargin-left:0px !important;\r\n\t\t\tmargin-right:0px !important; \r\n\t\t\t\r\n\t\t}\r\n\t\t\t\t#tab_container_1020 .wpsm_nav-tabs > li{\r\n\t\t\tfloat:none !important;\r\n\t\t}\r\n\t\t\t\r\n\t}\t\t\t\t<\/style>\r\n\t\t\t\t<div id=\"tab_container_1020\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_1020\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  class=\"active\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1020_1\" aria-controls=\"tabs_desc_1020_1\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1020_2\" aria-controls=\"tabs_desc_1020_2\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C++<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1020_3\" aria-controls=\"tabs_desc_1020_3\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Java<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1020_4\" aria-controls=\"tabs_desc_1020_4\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Python<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t <\/ul>\r\n\r\n\t\t\t\t\t  <!-- Tab panes -->\r\n\t\t\t\t\t  <div class=\"tab-content\" id=\"tab-content_1020\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane  in active \" id=\"tabs_desc_1020_1\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"c\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include &lt;stdio.h&gt;\r\n#include&lt;string.h&gt;\r\n\r\nint main()\r\n{\r\n  int test;\r\n  scanf(&quot;%d&quot;, &amp;test);\r\n\r\n  while(test--){\r\n\r\n    char num[100001];\r\n    scanf(&quot;%s&quot;,num);\r\n\r\n    int index, changed = 0;\r\n\r\n    for(int i=strlen(num)-2; i&gt;=0; i--){\r\n\r\n      if(num[i]&gt;num[i+1]){\r\n        num[i] = num[i] - 1;\r\n        index = i;\r\n        changed = 1;\r\n      }\r\n\r\n    }\r\n\r\n    for(int i = index+1; i&lt;strlen(num) &amp;&amp; changed == 1; i++)\r\n      num[i] = '9';\r\n\r\n    printf(&quot;%s&#92;n&quot;,num);\r\n\r\n  }\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\r\n\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1020_2\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"cpp\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include &lt;bits\/stdc++.h&gt;\r\nusing namespace std;\r\nint main()\r\n{\r\n  int test;\r\n  cin&gt;&gt;test;\r\n\r\n  while(test--){\r\n\r\n    char num[100001];\r\n    cin&gt;&gt;num;\r\n\r\n    int index, changed = 0;\r\n\r\n    for(int i=strlen(num)-2; i&gt;=0; i--){\r\n\r\n      if(num[i]&gt;num[i+1]){\r\n        num[i] = num[i] - 1;\r\n        index = i;\r\n        changed = 1;\r\n      }\r\n\r\n    }\r\n\r\n    for(int i = index+1; i&lt;strlen(num) &amp;&amp; changed == 1; i++)\r\n      num[i] = '9';\r\n\r\n    cout&lt;&lt;num&lt;&lt;endl;\r\n\r\n  }\r\n  return 0;\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1020_3\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"java\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\nimport java.util.*;\r\nimport java.io.*;\r\nimport java.lang.Math;\r\npublic class Main {\r\n  public static void main(String args[]) throws IOException {\r\n\r\n    Scanner sc= new Scanner(System.in);\r\n    int test = sc.nextInt();\r\n      while(test != 0){\r\n\r\n        String num = sc.next();\r\n\r\n        int index = 0, changed = 0;\r\n\r\n        for(int i=num.length()-2; i&gt;=0; i--){\r\n\r\n          if(num.charAt(i)&gt;num.charAt(i+1)){\r\n            num = num.substring(0,i) + (char)((int)(num.charAt(i)) - 1) + num.substring(i+1);\r\n            index = i;\r\n            changed = 1;\r\n          }\r\n\r\n        }\r\n\r\n        for(int i = index+1; i&lt;num.length() &amp;&amp; changed == 1; i++)\r\n          num = num.substring(0,i) + '9' + num.substring(i+1);\r\n\r\n        System.out.println(num);\r\n        test--;\r\n      }\r\n\r\n  }\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1020_4\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"Python\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"Python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\nfor _ in range(int(input())):\r\n\t\r\n\tnum = list(input())\r\n\tchanged = 0\r\n\r\n\tfor i in range(len(num) - 2, -1, -1):\r\n\t\tif num[i] > num[i + 1]:\r\n\t\t\tnum[i] = str(int(num[i]) - 1)\r\n\t\t\tindex = i\r\n\t\t\tchanged = 1\r\n\r\n\tif changed == 1:\r\n\t\t\r\n\t\tfor i in range(index + 1, len(num)):\r\n\t\t\tnum[i] = \"9\"\r\n\r\n\tprint(*num, sep = \"\")\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t \r\n\t\t\t\t <\/div>\r\n <script>\r\n\t\tjQuery(function () {\r\n\t\t\tjQuery('#myTab_1020 a:first').tab('show')\r\n\t\t});\r\n\t\t\r\n\t\t\t\tjQuery(function(){\r\n\t\t\tvar b=\"fadeIn\";\r\n\t\t\tvar c;\r\n\t\t\tvar a;\r\n\t\t\td(jQuery(\"#myTab_1020 a\"),jQuery(\"#tab-content_1020\"));function d(e,f,g){\r\n\t\t\t\te.click(function(i){\r\n\t\t\t\t\ti.preventDefault();\r\n\t\t\t\t\tjQuery(this).tab(\"show\");\r\n\t\t\t\t\tvar h=jQuery(this).data(\"easein\");\r\n\t\t\t\t\tif(c){c.removeClass(a);}\r\n\t\t\t\t\tif(h){f.find(\"div.active\").addClass(\"animated \"+h);a=h;}\r\n\t\t\t\t\telse{if(g){f.find(\"div.active\").addClass(\"animated \"+g);a=g;}else{f.find(\"div.active\").addClass(\"animated \"+b);a=b;}}c=f.find(\"div.active\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\r\n\t\tfunction do_resize(){\r\n\r\n\t\t\tvar width=jQuery( '.tab-content .tab-pane iframe' ).width();\r\n\t\t\tvar height=jQuery( '.tab-content .tab-pane iframe' ).height();\r\n\r\n\t\t\tvar toggleSize = true;\r\n\t\t\tjQuery('iframe').animate({\r\n\t\t\t    width: toggleSize ? width : 640,\r\n\t\t\t    height: toggleSize ? height : 360\r\n\t\t\t  }, 250);\r\n\r\n\t\t\t  toggleSize = !toggleSize;\r\n\t\t}\r\n\r\n\r\n\t<\/script>\r\n\t\t\t\t\r\n\t\t\t\n<p>[forminator_quiz id=&quot;1024&quot;]<\/p>\n<p>This article tried to discuss <strong>Strings<\/strong>. Hope this blog helps you understand and solve the problem. To practice more problems on Strings you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Concepts Used Strings Difficulty Level Medium Problem Statement (Simplified): For a number given to us, we have to print a number less than or equal to the given number, and having all digits in non-decreasing order. Test Case Input: 1 50 Output: 49 Explanation: 49 is a non-decreasing number and is also less than or [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[92],"tags":[],"class_list":["post-1019","post","type-post","status-publish","format-standard","hentry","category-sorting-interview-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Sorting Interview Programming | Largest Number Smaller | prepbytes<\/title>\n<meta name=\"description\" content=\"We Traverse from a Given Number, N to 1, and Then Check If the Given Number Has All Digits in Non-decreasing Order or Not. If Yes, We Break the Loop and Print the Number.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sorting Interview Programming | Largest Number Smaller | prepbytes\" \/>\n<meta property=\"og:description\" content=\"We Traverse from a Given Number, N to 1, and Then Check If the Given Number Has All Digits in Non-decreasing Order or Not. If Yes, We Break the Loop and Print the Number.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/\" \/>\n<meta property=\"og:site_name\" content=\"PrepBytes Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prepbytes0211\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-11T10:25:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-29T00:18:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png\" \/>\n<meta name=\"author\" content=\"Prepbytes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prepbytes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Largest number smaller than or equal to N and digits in non-decreasing order\",\"datePublished\":\"2020-06-11T10:25:19+00:00\",\"dateModified\":\"2022-03-29T00:18:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/\"},\"wordCount\":495,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png\",\"articleSection\":[\"Sorting interview programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/\",\"name\":\"Sorting Interview Programming | Largest Number Smaller | prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png\",\"datePublished\":\"2020-06-11T10:25:19+00:00\",\"dateModified\":\"2022-03-29T00:18:16+00:00\",\"description\":\"We Traverse from a Given Number, N to 1, and Then Check If the Given Number Has All Digits in Non-decreasing Order or Not. If Yes, We Break the Loop and Print the Number.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sorting interview programming\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/sorting-interview-programming\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Largest number smaller than or equal to N and digits in non-decreasing order\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/43.205.93.38\/#website\",\"url\":\"http:\/\/43.205.93.38\/\",\"name\":\"PrepBytes Blog\",\"description\":\"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING\",\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/43.205.93.38\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/43.205.93.38\/#organization\",\"name\":\"Prepbytes\",\"url\":\"http:\/\/43.205.93.38\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"contentUrl\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"width\":160,\"height\":160,\"caption\":\"Prepbytes\"},\"image\":{\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prepbytes0211\/\",\"https:\/\/www.instagram.com\/prepbytes\/\",\"https:\/\/www.linkedin.com\/company\/prepbytes\/\",\"https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\",\"name\":\"Prepbytes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"caption\":\"Prepbytes\"},\"url\":\"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sorting Interview Programming | Largest Number Smaller | prepbytes","description":"We Traverse from a Given Number, N to 1, and Then Check If the Given Number Has All Digits in Non-decreasing Order or Not. If Yes, We Break the Loop and Print the Number.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/","og_locale":"en_US","og_type":"article","og_title":"Sorting Interview Programming | Largest Number Smaller | prepbytes","og_description":"We Traverse from a Given Number, N to 1, and Then Check If the Given Number Has All Digits in Non-decreasing Order or Not. If Yes, We Break the Loop and Print the Number.","og_url":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-06-11T10:25:19+00:00","article_modified_time":"2022-03-29T00:18:16+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Largest number smaller than or equal to N and digits in non-decreasing order","datePublished":"2020-06-11T10:25:19+00:00","dateModified":"2022-03-29T00:18:16+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/"},"wordCount":495,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png","articleSection":["Sorting interview programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/","url":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/","name":"Sorting Interview Programming | Largest Number Smaller | prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png","datePublished":"2020-06-11T10:25:19+00:00","dateModified":"2022-03-29T00:18:16+00:00","description":"We Traverse from a Given Number, N to 1, and Then Check If the Given Number Has All Digits in Non-decreasing Order or Not. If Yes, We Break the Loop and Print the Number.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645101709015-Article_375.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/largest-number-smaller-than-or-equal-to-n-and-digits-in-non-decreasing-order\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Sorting interview programming","item":"https:\/\/prepbytes.com\/blog\/category\/sorting-interview-programming\/"},{"@type":"ListItem","position":3,"name":"Largest number smaller than or equal to N and digits in non-decreasing order"}]},{"@type":"WebSite","@id":"http:\/\/43.205.93.38\/#website","url":"http:\/\/43.205.93.38\/","name":"PrepBytes Blog","description":"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING","publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/43.205.93.38\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/43.205.93.38\/#organization","name":"Prepbytes","url":"http:\/\/43.205.93.38\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/","url":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","contentUrl":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","width":160,"height":160,"caption":"Prepbytes"},"image":{"@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prepbytes0211\/","https:\/\/www.instagram.com\/prepbytes\/","https:\/\/www.linkedin.com\/company\/prepbytes\/","https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA"]},{"@type":"Person","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e","name":"Prepbytes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","caption":"Prepbytes"},"url":"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/"}]}},"_links":{"self":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/comments?post=1019"}],"version-history":[{"count":16,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1019\/revisions"}],"predecessor-version":[{"id":8329,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1019\/revisions\/8329"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=1019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=1019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=1019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}