มีกฎเหมือนหลังจาก 20 นาทีคุณควรเริ่มเขียนโค้ดไม่ว่าจะเกิดอะไรขึ้น?
ไม่ แต่ถ้าคุณใช้เวลาวิเคราะห์ปัญหา 20 นาทีก่อนลงมือทำธุรกิจคุณอาจมีปัญหาอยู่แล้ว นายจ้างที่ถามคำถามเช่นเดียวกับที่คุณอ้างถึงส่วนใหญ่สนใจว่าคุณจัดการปัญหาอย่างไร แต่ถ้าพวกเขาถามว่าเป็นปัญหาการเข้ารหัสพวกเขาก็จะต้องการเห็นรหัสด้วยเช่นกัน พูดคุยผ่านกระบวนการคิดของคุณ ...
วิธีการที่ชัดเจนที่นี่คือกำลังดุร้าย หากฉันมีวิธีที่จะรู้จักสามเหลี่ยมมุมฉากที่กำหนดจุดยอดทั้งสามฉันสามารถวิ่งผ่านการรวมกันของจุดสองจุดและต้นกำเนิดกำลังมองหาสามเหลี่ยมที่ถูกต้อง ไม่ควรยาก - ฉันสามารถเขียนฟังก์ชั่นที่ใช้ทฤษฎีบทพีทาโกรัสเพื่อระบุรูปสามเหลี่ยมที่ถูกต้อง เพื่อให้ง่ายขึ้นฉันจะเขียนฟังก์ชันที่กำหนดระยะห่างระหว่างจุดสองจุดด้วยสูตรระยะทาง ...
การเขียนฟังก์ชั่นเหล่านั้นควรใช้เวลาประมาณสามนาที ตอนนี้คำถามเพียงไม่กี่นาทีคุณได้แสดงให้เห็นแล้วว่าคุณจำรูปทรงเรขาคณิตพื้นฐานและคุณรู้วิธีการเขียนโค้ดจริงๆ นอกจากนี้ยังให้สิ่งที่คุณพูดคุยเกี่ยวกับ:
ดังนั้นเราจึงสามารถใส่isRightTriangle(p1, p2, p3)
ฟังก์ชั่นตรงกลางของสี่for
ลูปและวนซ้ำตัวเลือกที่เป็นไปได้ทั้งหมดสำหรับแต่ละตัวแปรสองจุด ลองดู ... ปัญหาถามจำนวนสามเหลี่ยมมุมฉากรวมถึงต้นกำเนิดบนกริด 50x50 ดังนั้นการใช้วิธีกำลังดุร้ายทำให้เราตรวจสอบ 50 ความเป็นไปได้สำหรับแต่ละพิกัดของแต่ละจุด นั่นคือการตรวจสอบ 50 ^ 4 ... ฉันแน่ใจว่าเราทำได้ดีกว่า แต่รหัสนั้นชัดเจนดังนั้นให้ฉันเขียนลงไป ...
ดังนั้นตอนนี้คุณเขียนฟังก์ชันที่ใช้for
ลูปซ้อนกันและisRightTriangle()
ฟังก์ชันที่คุณเพิ่งเขียน คุณแก้ไขปัญหาได้แล้ว แต่คุณก็ให้ผู้สัมภาษณ์เห็นว่าคุณกำลังจะไปไหน หากเป้าหมายของพวกเขาเพียงเพื่อดูว่าคุณสามารถเขียนรหัสพวกเขาอาจบอกให้คุณหยุด มีความเป็นไปได้มากกว่าที่พวกเขาจะมีความสุขที่ได้พูดคุยกับคนที่รู้ว่าพวกเขากำลังทำอะไรอยู่ ดังนั้นคุณไปที่ ...
มันเกิดขึ้นกับฉันในขณะที่ฉันกำลังเขียนว่าเราสามารถใช้ประโยชน์จากความสมมาตร เราสามารถสะท้อนสามเหลี่ยมมุมฉากใด ๆ ที่ได้รับรอบเส้น 45 °ดังนั้นหากเราเลือกที่จะตรวจสอบจุดใดจุดหนึ่งที่ด้านใดด้านหนึ่งของเส้นนั้นเราก็สามารถนับสามเหลี่ยมมุมฉากใด ๆ ที่เราพบสองครั้ง ... หนึ่งครั้งสำหรับสามเหลี่ยมและอีกครั้ง สำหรับการสะท้อน ที่ลดจำนวนเช็คครึ่งหนึ่ง นอกจากนี้ดูที่ตอนนี้เรากำลังหารูทสแควร์เพื่อหาระยะห่างระหว่างสองจุด แต่จากนั้นเราก็แค่สแควร์นั่นอีกครั้งในisRightTriangle()
...
และอื่น ๆ อีกครั้งพวกเขามักไม่ต้องการเห็นทางออกที่สมบูรณ์แบบพวกเขาต้องการดูว่าคุณจะได้รับโซลูชั่นอย่างไร กระบวนการคิดของคุณไม่จำเป็นต้องเป็นอย่างที่กล่าวมาข้างต้นเพียงแค่มีความมั่นใจในการคิดออกมาดัง ๆ จะนับเป็นจำนวนมาก อย่าเหงื่อออกถ้าคุณทำผิดพลาด - แค่พูดว่า "อืมฉันคิดว่าฉันออกจากรางรถไฟที่นี่แล้ว - ให้ฉันย้อนกลับไปที ... "