กลับไปยังโจทย์
ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

หาค่าสูงสุดในอาเรย์

หาค่าที่มากที่สุดในลิสต์

สิ่งที่คุณจะได้เรียนรู้

  • หาค่ามากสุดในการไล่รอบเดียว
  • เริ่มค่ามากสุดด้วยสมาชิกตัวแรก
  • ทำงานกับเลขลบ

โจทย์

คืนค่าที่มากที่สุดในลิสต์โดยตรวจสอบแต่ละสมาชิกเพียงครั้งเดียว

ให้เขียนฟังก์ชัน array_maximum(numbers)

อินพุต

numbers: ลิสต์ของจำนวนเต็มที่ไม่ว่างเปล่า

เอาต์พุต

คืนค่าที่มากที่สุด

เงื่อนไข

1 ≤ ความยาว ≤ 100,000

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
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

ตัวอย่างที่ 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 กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก