tips:使用数组的时候,大部分方法的时间复杂度一般是O(n)。O(n)的意思是,我们需要迭代整个数组直到找到要找的那个元素,再最坏的情况下需要迭代数组的所有位置,n代表的数据的长度。
利用数组创建栈
class Stack<T> {
constructor() {
this.arr = []
}
arr: T[]
// 向栈底部推入一个数据
push(item: T) {
this.arr.push(item)
}
// 取出栈顶
pop() {
let a = this.arr.pop()
return a as T
}
// 查看栈顶元素
peek() {
return this.arr[this.arr.length]
}
size() {
return this.arr.length
}
isEmpty() {
return !!(!this.arr.length)
}
clear() {
this.arr = []
}
getValue() {
return this.arr
}
}
使用Stack实现十进制与其他进制之间的转化
/**
* 使用Stack实现十进制与其他进制之间的转化
* @param {number} num
* @param base
*/
function decimalismConversion(num: number, base: number) {
const digits:string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
const stack = new Stack<number>()
let myString: string = ''
if (base >= 2 && base <= 36) {
while (num > 0) {
const index = num % base
stack.push(index)
num = Math.floor(num / base)
}
while (!stack.isEmpty()) {
myString += digits[stack.pop()]
}
return myString
} else {
return 'Error'
}
}
console.log(decimalismConversion(10, 2) // 1010
)```