{"id":9616,"date":"2022-09-12T09:53:55","date_gmt":"2022-09-12T09:53:55","guid":{"rendered":"https:\/\/www.prepbytes.com\/blog\/?p=9616"},"modified":"2022-10-03T03:59:52","modified_gmt":"2022-10-03T03:59:52","slug":"check-if-an-array-is-stack-sortable","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/","title":{"rendered":"Check if an Array is Stack Sortable"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg\" alt=\"\" \/><\/p>\n<h3>Problem Statement<\/h3>\n<p>You will be given an array A of integers containing N elements. All the elements inside the array are unique and in the range of 1 to N, where both 1 and N are inclusive.<br \/>\nYou have to tell whether this <a href=\"https:\/\/prepbytes.com\/blog\/tag\/arrays\/\" title=\"array\">array<\/a> A is stack sortable or not.<\/p>\n<p>An array A is said to be stack sortable if all the elements of array A can be moved to an array B by using an auxiliary stack when only the given operations are allowed.<\/p>\n<ol>\n<li><strong>Operation 1:<\/strong> Removing an element from the front of array A and inserting it into the Stack.<\/li>\n<li><strong>Operation 2:<\/strong> Removing the element (top) from the stack and appending it to the end of array B.<\/li>\n<\/ol>\n<p>So, after moving all the elements of array A to array B using the above operations, if array B is sorted in ascending order, array A can be said to be stack sortable else it cannot be called stack sortable.<\/p>\n<p><strong>Example<\/strong><\/p>\n<p>Consider the array A, B, and the stack as shown below.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974790590-7-01.png\" alt=\"\" \/><\/p>\n<p>Now, let us try to see if all the elements of array A can be moved to array B such that array B is sorted in ascending order.<\/p>\n<ol>\n<li>Operation 1<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662975596161-7-02.png\" alt=\"\" \/><\/p>\n<ol start=\"2\">\n<li>Operation 1 (Now element 1 is at the front of the array as 4 has been removed.)<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662975687693-7-03.png\" alt=\"\" \/><\/p>\n<ol start=\"3\">\n<li>Operation 2 (Remove 1 from the stack and insert it into the array)<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662976051192-7-04.png\" alt=\"\" \/><\/p>\n<ol start=\"4\">\n<li>Operation 1 (Remove 2 from the front and add it to the top of the stack)<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662976174029-7-05.png\" alt=\"\" \/><\/p>\n<ol start=\"5\">\n<li>Operation 2 (Remove 2 from the stack and add it to the array B).<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662976083258-7-06.png\" alt=\"\" \/><\/p>\n<ol start=\"6\">\n<li>Operation 1 (Add 3 into the stack)<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662976216607-7-07.png\" alt=\"\" \/><\/p>\n<ol start=\"7\">\n<li>Operation 2 (Remove 3 from the stack and add it to the array B)<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662976243587-7-08.png\" alt=\"\" \/><\/p>\n<ol start=\"8\">\n<li>Operation 2 (Remove 4 from the stack and add it to the array B)<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662976273026-7-09.png\" alt=\"\" \/><\/p>\n<p>So, as you can see, we have successfully filled array B in ascending order by removing all the elements of array A and performing just the 2 allowed operations. Hence, array A is stack sortable.<\/p>\n<h3>Approach<\/h3>\n<p>The approach is purely observation based and we can derive the logic for our observation. <\/p>\n<p>From the sequence of operations performed in the above example, we can observe that:<\/p>\n<ol>\n<li>Pushing an element into the stack  is only possible when either the stack is empty or the current element that we want to push into the stack is less than the value at the top of the stack.<\/li>\n<li>Popping an element from the stack is only possible if the element present at the top of the stack is the next element in the sequence to the last element present in the array B i.e. top of the stack = B[end] + 1. This is because the array B has to maintain the sequence {1,2,3 \u2026. N}.<\/li>\n<\/ol>\n<p>So, we will continue to perform there operations till all the elements of the array are processed and till the stack is not empty. However, in between the procedure, if we are not able to push the starting element of the array A into the stack and we can\u2019t pop an element from the stack as well, then the array A will be not stack sortable. <\/p>\n<p>So, since we have already seen in the example aboe, a case where we found that array A was stack sortable, let us now see a case when we find that the array A is not stack sortable. For this, consider the example given below.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662976320044-7-10.png\" alt=\"\" \/><\/p>\n<p>We have initially filled the array B with 0s. (No need to do this in Java as they are by default 0s. In C++, these may be garbage values hence we will fill them.)<\/p>\n<p>So, let us try to find out whether the array A is stack sortable or not using the 2 points discussed above.<br \/>\nFirst, since the stack is empty, we will perform operation 1 i.e. push an element (front of the array A) into the stack. (Also, initially, the end pointer will be at index 0)<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662976351446-7-11.png\" alt=\"\" \/><\/p>\n<p>Now, we move at the next element 3. Since the current element is larger than the top of the stack, we cannot push it into the stack. Also, 2 which is at the top of the stack is not equal to B[end] + 1 as B[end] +1 = B[0] + 1 = 0 + 1 = 1.<\/p>\n<p>Hence, we can\u2019t push the element into the stack and can\u2019t place it into the array either. So, the array A is not stack sortable.<\/p>\n<p>Now that we have discussed the complete procedure, let us write the code for the same.<\/p>\n\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_9638 {\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_9638 .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_9638 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_9638 .wpsm_nav-tabs > li.active > a, #tab_container_9638 .wpsm_nav-tabs > li.active > a:hover, #tab_container_9638 .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_9638 .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_9638 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_9638 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_9638 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_9638 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_9638 .wpsm_nav-tabs > li > a:hover , #tab_container_9638 .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_9638 .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_9638 .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_9638 .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_9638 .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_9638 .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_9638 .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_9638 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_9638 .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_9638 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_9638 .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_9638 .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_9638\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_9638\">\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_9638_1\" aria-controls=\"tabs_desc_9638_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_9638_2\" aria-controls=\"tabs_desc_9638_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>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\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_9638\">\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_9638_1\">\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\n\r\nbool check(int A[], int N)\r\n{\r\n\tstack&lt;int&gt; stk;\r\n\r\n\tint B_end = 0;\r\n\r\n\tfor (int i = 0; i &lt; N; i++)\r\n\t{\r\n\t\tif (!stk.empty())\r\n\t\t{\r\n\t\t\tint top = stk.top();\r\n\r\n            \/\/we are checking whether the top of the stack\r\n            \/\/can be appended into the array B\r\n\t\t\twhile (top == B_end + 1)\r\n\t\t\t{\r\n\t\t\t\tB_end = B_end + 1;\r\n\r\n\t\t\t\tstk.pop();\r\n                \r\n                \/\/if the stack is empty\r\n                \/\/ we cannot perform the pop operation again\r\n                \/\/ So, we will break\r\n\t\t\t\tif (stk.empty())\r\n\t\t\t\t{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttop = stk.top();\r\n\t\t\t}\r\n\r\n            \/\/as per our discussion\r\n            \/\/if stack is empty\r\n            \/\/perform operation 1\r\n            \r\n\t\t\tif (stk.empty()) {\r\n\t\t\t\tstk.push(A[i]);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\ttop = stk.top();\r\n\r\n                \/\/this is the case of performing operation 1\r\n\t\t\t\tif (A[i] &lt; top)\r\n\t\t\t\t{\r\n\t\t\t\t\tstk.push(A[i]);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\/\/else we cannot push the element into the stack\r\n\t\t\t\t\/\/and we cannot insert the stack element into the array (already checked)\r\n\t\t\t\t\/\/so, A is not stack sortable\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t\/\/ Not Stack Sortable\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ If the stack is empty push the current\r\n\t\t\t\/\/ element in the stack.\r\n\t\t\tstk.push(A[i]);\r\n\t\t}\r\n\t}\r\n\r\n\t\/\/ Stack Sortable\r\n\treturn true;\r\n}\r\n\r\nint main()\r\n{\r\n\tint A[] = {4, 1, 2, 3 };\r\n\tint N = sizeof(A) \/ sizeof(int);\r\n\tcheck(A, N)? cout&lt;&lt;&quot;Yes, the array A is stack sortable&quot;: cout&lt;&lt;&quot;NO, the array A is not stack sortable&quot;;\r\n\treturn 0;\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\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_9638_2\">\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\n\r\nclass Main {\r\n\r\n\tstatic boolean check(int A[], int N) {\r\n\t\tStack&lt;Integer&gt; stk = new Stack&lt;Integer&gt;();\r\n\r\n\t\tint B_end = 0;\r\n\r\n\t\tfor (int i = 0; i &lt; N; i++) {\r\n\t\t\tif (!stk.empty()) {\r\n\t\t\t\tint top = stk.peek();\r\n                \r\n                \/\/perform operation 1\r\n\t\t\t\twhile (top == B_end + 1) {\r\n\t\t\t\t\tB_end = B_end + 1;\r\n\r\n\t\t\t\t\tstk.pop();\r\n\r\n\t\t\t\t\t\/\/ If the stack is empty We cannot\r\n\t\t\t\t\t\/\/ further perfom pop operation.\r\n\t\t\t\t\t\/\/ hence break\r\n\t\t\t\t\tif (stk.empty()) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttop = stk.peek();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (stk.empty()) {\r\n\t\t\t\t\tstk.push(A[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttop = stk.peek();\r\n\r\n                    \/\/this is the case of operation 1 \r\n\t\t\t\t\tif (A[i] &lt; top) {\r\n\t\t\t\t\t\tstk.push(A[i]);\r\n\t\t\t\t\t} \/\/ Else we cannot insert the element into the stack\r\n\t\t\t\t\t\/\/and we cannot pop an element from the stack (already checked)\r\n\t\t\t\t\t\/\/so, A is not stack sortable\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t\/\/ Not Stack Sortable\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t    \/\/if the stack is empty, perform operation 1\r\n\t\t\t\tstk.push(A[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Stack Sortable\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic static void main(String[] args) {\r\n\r\n\t\tint A[] = {4, 1, 2, 3};\r\n\t\tint N = A.length;\r\n\r\n\t\tif (check(A, N)) {\r\n\t\t\tSystem.out.println(&quot;YES, the array A is stack sortable&quot;);\r\n\t\t} else {\r\n\t\t\tSystem.out.println(&quot;NO, the array B is not stack sortable&quot;);\r\n\t\t}\r\n\r\n\t}\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\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_9638 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_9638 a\"),jQuery(\"#tab-content_9638\"));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><strong>Time Complexity<\/strong><\/p>\n<p>The time complexity of this approach is O(N) as we are traversing all the elements of array A and filling them into array B.<\/p>\n<p><strong>Space Complexity<\/strong><\/p>\n<p>We are using a Stack and an array B. However, it was the demand of the question to use these. Hence, these are not any auxiliary spaces used by us to solve the problem. Hence, the space complexity will be O(1). <\/p>\n<p>If we consider the stack and the array B space, then the space complexity will be O(N). However, again, it should not be considered as auxiliary space because it was the demand of the question to use them.<\/p>\n<p>This article tried to discuss How to Check if an Array is Stack Sortable. Hope this blog helps you understand and solve the problem. To practice more problems you can check out <a href=\"#\" title=\"\"><\/a> at <a href=\"https:\/\/www.prepbytes.com\/\" title=\"Prepbytes\">Prepbytes<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Statement You will be given an array A of integers containing N elements. All the elements inside the array are unique and in the range of 1 to N, where both 1 and N are inclusive. You have to tell whether this array A is stack sortable or not. An array A is said [&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":[163],"tags":[],"class_list":["post-9616","post","type-post","status-publish","format-standard","hentry","category-arrays"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Check if an Array is Stack Sortable | Arrays | PrepBytes Blog<\/title>\n<meta name=\"description\" content=\"This article tried to discuss How to Check if an Array is Stack Sortable. Hope this blog helps you understand and solve the problem.\" \/>\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\/check-if-an-array-is-stack-sortable\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Check if an Array is Stack Sortable | Arrays | PrepBytes Blog\" \/>\n<meta property=\"og:description\" content=\"This article tried to discuss How to Check if an Array is Stack Sortable. Hope this blog helps you understand and solve the problem.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/\" \/>\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=\"2022-09-12T09:53:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-03T03:59:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Check if an Array is Stack Sortable\",\"datePublished\":\"2022-09-12T09:53:55+00:00\",\"dateModified\":\"2022-10-03T03:59:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/\"},\"wordCount\":874,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg\",\"articleSection\":[\"Arrays\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/\",\"name\":\"Check if an Array is Stack Sortable | Arrays | PrepBytes Blog\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg\",\"datePublished\":\"2022-09-12T09:53:55+00:00\",\"dateModified\":\"2022-10-03T03:59:52+00:00\",\"description\":\"This article tried to discuss How to Check if an Array is Stack Sortable. Hope this blog helps you understand and solve the problem.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arrays\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/arrays\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Check if an Array is Stack Sortable\"}]},{\"@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":"Check if an Array is Stack Sortable | Arrays | PrepBytes Blog","description":"This article tried to discuss How to Check if an Array is Stack Sortable. Hope this blog helps you understand and solve the problem.","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\/check-if-an-array-is-stack-sortable\/","og_locale":"en_US","og_type":"article","og_title":"Check if an Array is Stack Sortable | Arrays | PrepBytes Blog","og_description":"This article tried to discuss How to Check if an Array is Stack Sortable. Hope this blog helps you understand and solve the problem.","og_url":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2022-09-12T09:53:55+00:00","article_modified_time":"2022-10-03T03:59:52+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Check if an Array is Stack Sortable","datePublished":"2022-09-12T09:53:55+00:00","dateModified":"2022-10-03T03:59:52+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/"},"wordCount":874,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg","articleSection":["Arrays"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/","url":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/","name":"Check if an Array is Stack Sortable | Arrays | PrepBytes Blog","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg","datePublished":"2022-09-12T09:53:55+00:00","dateModified":"2022-10-03T03:59:52+00:00","description":"This article tried to discuss How to Check if an Array is Stack Sortable. Hope this blog helps you understand and solve the problem.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1662974758297-7%20Topic.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/check-if-an-array-is-stack-sortable\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Arrays","item":"https:\/\/prepbytes.com\/blog\/category\/arrays\/"},{"@type":"ListItem","position":3,"name":"Check if an Array is Stack Sortable"}]},{"@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\/9616","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=9616"}],"version-history":[{"count":4,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/9616\/revisions"}],"predecessor-version":[{"id":9749,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/9616\/revisions\/9749"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=9616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=9616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=9616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}