โจทย์
คืนค่าที่มากที่สุดในลิสต์โดยตรวจสอบแต่ละสมาชิกเพียงครั้งเดียว
ให้เขียนฟังก์ชัน array_maximum(numbers)
อินพุต
numbers: ลิสต์ของจำนวนเต็มที่ไม่ว่างเปล่า
เอาต์พุต
คืนค่าที่มากที่สุด
เงื่อนไข
1 ≤ ความยาว ≤ 100,000
ตัวอย่าง
อินพุต:
numbers = [3, 9, 2]
ผลลัพธ์ที่คาดหวัง:
expected = 9
อินพุต:
std::vector<long long> numbers = {3, 9, 2};
ผลลัพธ์ที่คาดหวัง:
long long expected = 9;
อินพุต:
long[] numbers = new long[] {3, 9, 2};
ผลลัพธ์ที่คาดหวัง:
long expected = 9;
คำอธิบาย
9 มากกว่า 3 และ 2
อินพุต:
numbers = [-4, -1, -7]
ผลลัพธ์ที่คาดหวัง:
expected = -1
อินพุต:
std::vector<long long> numbers = {-4, -1, -7};
ผลลัพธ์ที่คาดหวัง:
long long expected = -1;
อินพุต:
long[] numbers = new long[] {-4, -1, -7};
ผลลัพธ์ที่คาดหวัง:
long expected = -1;
คำอธิบาย
เมื่อมีแต่ค่าติดลบ -1 คือค่าที่มากที่สุด
แนวทางการแก้
ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ
คำใบ้ 1
เริ่มจากสมาชิกตัวแรกเป็นค่าที่ดีที่สุด ณ ตอนนั้น
คำใบ้ 2
ไล่ดูรายการครั้งเดียว แล้วอัปเดตค่าที่ดีที่สุดเมื่อเจอค่าที่มากกว่า
คำใบ้ 3
อย่าคิดว่าค่าต้องเป็นบวก; ค่าลบก็อาจเป็นค่าสูงสุดได้
ความซับซ้อนที่คาดหวัง
เวลา O(n), หน่วยความจำเพิ่ม O(1)
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน