Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Above-Average Values

Keep the values that are greater than the average.

Bạn sẽ học được gì

  • Tính trung bình trước
  • Lọc giá trị ở lần duyệt thứ hai
  • Giữ nguyên thứ tự ban đầu

Đề bài

Compute the average of the list, then keep only the values strictly greater than it, in their original order.

Implement above_average(numbers).

Input

numbers: The list of integers.

Output

Return the values above the average (an empty list for an empty input).

Ràng buộc

0 ≤ length ≤ 10,000; -1,000,000 ≤ each value ≤ 1,000,000

Ví dụ

Ví dụ 1
Đầu vào:
numbers = [1, 2, 3, 4, 10]

Kết quả mong đợi:
expected = [10]
Đầu vào:
std::vector<long long> numbers = {1, 2, 3, 4, 10};

Kết quả mong đợi:
std::vector<long long> expected = {10};
Đầu vào:
long[] numbers = new long[] {1, 2, 3, 4, 10};

Kết quả mong đợi:
long[] expected = new long[] {10};

Giải thích

The average is 20 / 5 = 4; only 10 is greater than 4.

Ví dụ 2
Đầu vào:
numbers = [5, 5, 5]

Kết quả mong đợi:
expected = []
Đầu vào:
std::vector<long long> numbers = {5, 5, 5};

Kết quả mong đợi:
std::vector<long long> expected = {};
Đầu vào:
long[] numbers = new long[] {5, 5, 5};

Kết quả mong đợi:
long[] expected = new long[] {};

Giải thích

Every value equals the average 5, so none is greater: [].

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Trước hết tìm average của danh sách, rồi giữ lại các giá trị lớn hơn nó một cách строго.

Gợi ý 2

Thường cần một lượt để tính tổng và một lượt nữa để lấy các phần tử phù hợp.

Gợi ý 3

Nếu danh sách rỗng, kết quả cũng պետք là rỗng.

Độ phức tạp mong đợi

thời gian O(n), bộ nhớ phụ O(1)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.