2010-02-27 43 views

Trả lời

45
array.reverse.each { |x| puts x } 
+0

tôi biết sẽ có một cái gì đó 'nice' ... Cảm ơn bạn. – Radek

+55

Thực ra, 'reverse_each' là tốt hơn bởi vì nó không tạo bản sao của mảng như' đảo ngược'. –

+2

Vâng, tôi cũng hy vọng rằng 'reverse_each' tốt hơn, mặc dù tôi chưa đào sâu vào bên trong để tự mình xem. –

83

Ruby là thông minh

a = [ "a", "b", "c" ] 
a.reverse_each {|x| print x, " " } 
4

Bạn thậm chí có thể sử dụng một vòng lặp for

array = [ 'first','middle','last'] 
for each in array.reverse do 
    print array 
end 

sẽ in

last 
middle 
first 
0

Trong một mẫu ngọc bạn có thể sử dụng:

for item in array.reverse() 
    item 
3

Trong trường hợp bạn muốn lặp thông qua một loạt ngược lại sau đó sử dụng:

(0..5).reverse_each do |i| 
    # do something 
end 
+0

Liệu '# reverse_each' có thực hiện hoạt động ngược trong nội bộ không? Hay nó chỉ bắt đầu ở cuối và làm việc ngược? Nếu sau này, câu trả lời này có thể đạt được độ phức tạp tốt hơn so với lần đầu gọi '# reverse' và' # each' riêng biệt, vì '# reverse' về cơ bản là hoạt động sắp xếp của O (n log n) trong khi đếm từ đầu đến cuối giống như '# each' theo độ phức tạp thời gian (tức là O (n)). –

0

Nếu bạn muốn đạt được như vậy mà không sử dụng đảo ngược [Đôi khi câu hỏi này xuất hiện trong các cuộc phỏng vấn]. Chúng ta cần sử dụng logic cơ bản.

  1. mảng có thể được truy cập thông qua chỉ số
  2. thiết lập các chỉ số theo chiều dài của mảng và sau đó suất này bằng 1 cho đến khi chỉ số xuống còn 0
  3. đầu ra để sàng lọc hoặc một mảng mới hoặc sử dụng vòng lặp để thực hiện bất kỳ logic .

    def reverseArray(input) 
         output = [] 
         index = input.length - 1 #since 0 based index and iterating from 
         last to first 
    
         loop do 
         output << input[index] 
         index -= 1 
         break if index < 0 
         end 
    
         output 
        end 
    
        array = ["first","middle","last"] 
    
        reverseArray array #outputs: ["last","middle","first"] 
    
Các vấn đề liên quan