Đặt A là tập hợp số nguyên không trống. Viết hàm tìm kết quả là tập hợp con không trống của A có sản phẩm tối đa. Ví dụ: tìm ([- 1, -2, -3, 0, 2]) = 12 = (-2) * (- 3) * 2Tìm tập hợp con của tập hợp các số nguyên có sản phẩm tối đa
Đây là những gì tôi nghĩ: chia danh sách thành danh sách các số nguyên dương và danh sách các số nguyên âm:
- Nếu chúng tôi có số nguyên âm, nhân tất cả mọi thứ trong cả hai danh sách và chúng tôi có câu trả lời.
- Nếu chúng tôi có một số lẻ các số nguyên âm, hãy tìm số nguyên lớn nhất và xóa số đó khỏi danh sách. Sau đó nhân tất cả mọi thứ trong cả hai danh sách.
- Nếu danh sách chỉ có một phần tử, hãy trả lại phần tử này.
Dưới đây là mã của tôi bằng Python:
def find(xs):
neg_int = []
pos_int = []
if len(xs) == 1:
return str(xs[0])
for i in xs:
if i < 0:
neg_int.append(i)
elif i > 0:
pos_int.append(i)
if len(neg_int) == 1 and len(pos_int) == 0 and 0 in xs:
return str(0)
if len(neg_int) == len(pos_int) == 0:
return str(0)
max = 1
if len(pos_int) > 0:
for x in pos_int:
max=x*max
if len(neg_int) % 2 == 1:
max_neg = neg_int[0]
for j in neg_int:
if j > max_neg:
max_neg = j
neg_int.remove(max_neg)
for k in neg_int:
max = k*max
return str(max)
Tôi có thiếu gì không? P.S. Đây là một vấn đề từ thách thức foobar của Google, tôi dường như thiếu một trường hợp nhưng tôi không biết.
Bây giờ đây là vấn đề thực tế:
Tôi có nghĩa là số âm lớn nhất, như -1> -3 – user112358
Làm max_neg = abs (neg_int [0]) .. và so sánh dựa trên giá trị tuyệt đối –
Bộ có cần phải là một bộ kích thước tối thiểu không? ví dụ. '[2, 3, 1, 1]' kết quả trong cùng một sản phẩm như '[2, 3]'. Thử thách có nói gì về cách bạn nên giải quyết sự khác biệt này không? – mgilson