日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

左神算法:用一个栈实现另一个栈的排序(Java版)

發(fā)布時(shí)間:2024/2/28 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 左神算法:用一个栈实现另一个栈的排序(Java版) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本題源自左神《程序員面試代碼指南》“用一個(gè)棧實(shí)現(xiàn)另一個(gè)棧的排序”題目。

題目

在一個(gè)棧中元素的類型為整型,現(xiàn)在想將該棧從棧頂?shù)綏5装磸拇蟮叫〉捻樞蚺判?#xff0c;只許申請(qǐng)一個(gè)棧,除此之外,可以申請(qǐng)其他變量,但是不能申請(qǐng)額外的數(shù)據(jù)結(jié)構(gòu)。

解答

將待排序的棧記為 stack, 輔助棧記為 help。 在 stack 上執(zhí)行 pop 操作,彈出的元素記為 cur。

  • 如果 cur 小于等于 help 的棧頂元素,則將 cur 直接壓入 help
  • 如果 cur 大于 help 的棧頂元素,則將 help 的元素逐一彈出,逐一壓入 stack,直到 cur 小于或等于 help 的棧頂元素,再將 cur 壓入 help

一直執(zhí)行以上操作,直到 stack 中的全部元素都?jí)喝氲?help 棧中(此時(shí)從棧頂?shù)綏5?#xff1a;有小到大),最后將help棧中的元素逐一壓入stack,即可完成排序。

代碼

import java.util.Stack;public class Main {public static void sortStackByStack(Stack<Integer> stack) {Stack<Integer> help = new Stack<Integer>();while (!stack.isEmpty()) {int cur = stack.pop();while (!help.isEmpty() && help.peek() < cur) {stack.push(help.pop());}help.push(cur);}while (!help.isEmpty()) {stack.push(help.pop());}}public static void main(String[] args) {Stack<Integer> stack = new Stack<Integer>();stack.push(3);stack.push(1);stack.push(6);stack.push(2);stack.push(5);stack.push(4);sortStackByStack(stack);System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());} }

輸出:

6 5 4 3 2 1

總結(jié)

以上是生活随笔為你收集整理的左神算法:用一个栈实现另一个栈的排序(Java版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。