刚才没什么事,决定试试用新学的Ruby把那个O(1)栈的问题做了一下。写着是挺快,一口气就下来了,只是代码里带着明显的C++气味。唉,习惯不是一两天就能改的。

代码和C++的差不多长。主要还是不习惯Ruby的思维,再加上那个C++代码中用了很多STL的东西,已经相当精简了。

class Stack
	class Pair
		def initialize(first, second)
			@first=first
			@second=second
		end
		attr_reader :first, :second
	end
	def initialize
		@stack=Array.new
		@minimum=nil
	end
	def push(e)
		if @stack.empty? then
			@minimum=e
		end
		@stack.push(Pair.new(e,@minimum))
		if e<@minimum then
			@minimum=e
		end
		return self
	end
	def pop
		node=@stack.pop
		@minimum=node.second
		if @stack.empty? then
			@minimum=nil
		end
		return self
	end
	def min
		return @minimum
	end
end

 

评论
发表评论

您还没有登录,请登录后发表评论

ggggqqqqihc
搜索本博客
存档
最新评论