2010-05-21 39 views
12

Giả sử tôi có một danh sách val list = List(34, 11, 98, 56, 43).Cách tìm chỉ mục của phần tử có giá trị tối thiểu?

Bây giờ làm cách nào để tìm chỉ mục của phần tử tối thiểu trong danh sách (ví dụ 1 trong trường hợp này)?

+0

Đây có phải là bài tập về nhà không. Tôi nghĩ nó quá dễ để làm – vodkhang

+2

Đó là một bài tập về nhà cực kỳ đơn giản. – Odrade

+2

@vodkhang và @Odrade, tôi tốt nghiệp 10 năm. Họ không dạy chúng tôi lập trình chức năng trong trường đại học của chúng tôi. Do đó các câu hỏi về bài tập về nhà như vậy. :( – Surya

Trả lời

23

On Scala 2.8:

List(34, 11, 98, 56, 43).zipWithIndex.min._2 
6

Danh sách trống không có giá trị tối thiểu. Danh sách chỉ một phần tử có phần tử đó là tối thiểu. Đối với tất cả các danh sách khác, mức tối thiểu là phần tử đầu tiên của danh sách đó hoặc tối thiểu của phần còn lại của danh sách, tùy thuộc vào giá trị nào lớn hơn.

Vì vậy, để tìm chỉ mục này sẽ trở thành: Đối với danh sách độ dài 1, chỉ số tối thiểu là 0. Nếu danh sách có nhiều hơn một phần tử và đuôi tối thiểu lớn hơn đầu thì cũng là 0. Nếu đầu lớn hơn thì chỉ mục là chỉ số tối thiểu của đuôi cộng với đuôi.

6

Tôi cho rằng cách dễ nhất là list.indexOf(list.min). Nó sẽ ném một ngoại lệ khi danh sách trống, mặc dù câu trả lời của Daniel cũng vậy.

Các vấn đề liên quan