คำถามติดแท็ก algorithm

อัลกอริทึมเป็นลำดับขั้นตอนที่กำหนดไว้อย่างดีซึ่งกำหนดวิธีแก้ปัญหาแบบนามธรรมให้กับปัญหา ใช้แท็กนี้เมื่อปัญหาของคุณเกี่ยวข้องกับการออกแบบอัลกอริทึม

3
เหตุใดอัลกอริทึมของ Dijkstra จึงใช้ปุ่มลดขนาด
อัลกอริทึมของ Dijkstra ได้รับการสอนให้ฉันมีดังนี้ while pqueue is not empty: distance, node = pqueue.delete_min() if node has been visited: continue else: mark node as visited if node == target: break for each neighbor of node: pqueue.insert(distance + distance_to_neighbor, neighbor) แต่ฉันได้อ่านเกี่ยวกับอัลกอริทึมและมีหลายเวอร์ชันที่ฉันเห็นว่าใช้ปุ่มลดขนาดแทนที่จะเป็นส่วนแทรก เหตุใดจึงเป็นเช่นนี้และทั้งสองแนวทางแตกต่างกันอย่างไร

12
Quicksort vs heapsort
ทั้ง Quicksort และ heapsort ทำการเรียงลำดับในสถานที่ แบบไหนดีกว่ากัน? แอปพลิเคชันและกรณีใดบ้างที่เป็นที่ต้องการ

17
วิธีที่ง่ายที่สุดในการทดสอบว่าตัวเลขเป็นเลขยกกำลัง 2 ใน C ++ อย่างไร
ฉันต้องการฟังก์ชั่นเช่นนี้: // return true iff 'n' is a power of 2, e.g. // is_power_of_2(16) => true is_power_of_2(3) => false bool is_power_of_2(int n); ใครช่วยแนะนำว่าฉันจะเขียนสิ่งนี้ได้อย่างไร คุณช่วยบอกฉันว่ามีเว็บไซต์ดีๆที่สามารถหาอัลกอริทึมประเภทนี้ได้ไหม

30
Quicksort ด้วย Python
ฉันใหม่มากกับ python และฉันกำลังพยายามใช้ Quicksort ในนั้น ใครช่วยกรุณาช่วยฉันกรอกรหัสได้ไหม ฉันไม่รู้ว่าจะเชื่อมอาร์เรย์ทั้งสามเข้าด้วยกันและพิมพ์ได้อย่างไร def sort(array=[12,4,5,6,7,3,1,15]): less = [] equal = [] greater = [] if len(array) > 1: pivot = array[0] for x in array: if x < pivot: less.append(x) if x == pivot: equal.append(x) if x > pivot: greater.append(x) sort(less) sort(pivot) sort(greater)

13
วิธีที่มีประสิทธิภาพที่สุดในการจัดเก็บหมายเลขโทรศัพท์หลายพันหมายเลข
นี่คือคำถามสัมภาษณ์ของ Google: มีหมายเลขโทรศัพท์ประมาณพันหมายเลขที่จะจัดเก็บแต่ละหมายเลขมี 10 หลัก คุณสามารถสมมติว่า 5 หลักแรกของแต่ละหลักเหมือนกันในพันตัวเลข คุณต้องดำเนินการดังต่อไปนี้: a. ค้นหาว่ามีหมายเลขที่ระบุหรือไม่ ข. พิมพ์หมายเลขทั้งหมด วิธีการประหยัดพื้นที่ที่มีประสิทธิภาพที่สุดในการทำเช่นนี้คืออะไร? ฉันตอบตารางแฮชและหลังจากนั้นก็เขียนโค้ด huffman แต่ผู้สัมภาษณ์ของฉันบอกว่าฉันไปไม่ถูกทาง โปรดช่วยฉันที่นี่ การใช้คำต่อท้ายจะช่วยได้หรือไม่? ตามหลักการแล้วการจัดเก็บหมายเลข 1,000 หมายเลขจะใช้เวลา 4 ไบต์ต่อหมายเลขดังนั้นโดยรวมแล้วจะใช้เวลา 4000 ไบต์ในการจัดเก็บหมายเลข 1,000 หมายเลข ในเชิงปริมาณฉันต้องการลดพื้นที่จัดเก็บลงเหลือ <4000 ไบต์นี่คือสิ่งที่ผู้สัมภาษณ์อธิบายให้ฉันฟัง

6
อัลกอริทึมเพื่อเว้นวรรคสี่เหลี่ยมที่ทับซ้อนกัน?
ปัญหานี้เกี่ยวข้องกับการโรลโอเวอร์จริงๆฉันจะสรุปไว้ด้านล่างดังนี้: ฉันมีมุมมอง 2 มิติและฉันมีรูปสี่เหลี่ยมจำนวนหนึ่งภายในพื้นที่บนหน้าจอ ฉันจะกางกล่องเหล่านั้นอย่างไรไม่ให้ซ้อนทับกัน แต่ปรับให้มีการเคลื่อนไหวน้อยที่สุดเท่านั้น ตำแหน่งของรูปสี่เหลี่ยมผืนผ้าเป็นแบบไดนามิกและขึ้นอยู่กับข้อมูลที่ผู้ใช้ป้อนดังนั้นตำแหน่งของมันจึงอยู่ที่ใดก็ได้ ภาพที่แนบมาแสดงปัญหาและแนวทางแก้ไขที่ต้องการ ปัญหาในชีวิตจริงเกี่ยวข้องกับการโรลโอเวอร์ คำตอบสำหรับคำถามในความคิดเห็น ขนาดของสี่เหลี่ยมไม่คงที่และขึ้นอยู่กับความยาวของข้อความในโรลโอเวอร์ เกี่ยวกับขนาดหน้าจอตอนนี้ฉันคิดว่ามันจะดีกว่าที่จะสมมติว่าขนาดของหน้าจอนั้นเพียงพอสำหรับสี่เหลี่ยม หากมีรูปสี่เหลี่ยมผืนผ้ามากเกินไปและ algo ไม่สามารถแก้ปัญหาได้ฉันก็ต้องปรับแต่งเนื้อหา ข้อกำหนดในการ 'เคลื่อนย้ายน้อยที่สุด' มีไว้สำหรับความไม่แน่นอนมากกว่าข้อกำหนดทางวิศวกรรมที่สมบูรณ์ เราสามารถเว้นวรรคสองรูปสี่เหลี่ยมได้โดยการเพิ่มระยะห่างระหว่างกันให้มาก แต่มันจะดูไม่ดีเมื่อเป็นส่วนหนึ่งของ GUI แนวคิดคือการทำให้โรลโอเวอร์ / สี่เหลี่ยมผืนผ้าใกล้เคียงกับแหล่งที่มา (ซึ่งฉันจะเชื่อมต่อกับแหล่งที่มาด้วยเส้นสีดำ) ดังนั้นไม่ว่าจะ 'ย้ายเพียงหนึ่งสำหรับ x' หรือ 'ย้ายทั้งสองสำหรับครึ่ง x' ก็ใช้ได้

30
อัลกอริทึม: วิธีที่มีประสิทธิภาพในการลบจำนวนเต็มที่ซ้ำกันออกจากอาร์เรย์
ฉันได้รับปัญหานี้จากการสัมภาษณ์กับ Microsoft ให้อาร์เรย์ของจำนวนเต็มสุ่มเขียนอัลกอริทึมใน C ที่ลบตัวเลขที่ซ้ำกันและส่งกลับตัวเลขที่ไม่ซ้ำกันในอาร์เรย์เดิม เช่นอินพุต: {4, 8, 4, 1, 1, 2, 9} เอาต์พุต:{4, 8, 1, 2, 9, ?, ?} ข้อแม้อย่างหนึ่งคืออัลกอริทึมที่คาดไว้ไม่ควรกำหนดให้เรียงลำดับอาร์เรย์ก่อน และเมื่อนำองค์ประกอบออกแล้วองค์ประกอบต่อไปนี้จะต้องเลื่อนไปข้างหน้าเช่นกัน อย่างไรก็ตามค่าขององค์ประกอบที่หางของอาร์เรย์ซึ่งองค์ประกอบถูกเลื่อนไปข้างหน้านั้นมีความสำคัญเล็กน้อย อัปเดต:ผลลัพธ์จะต้องถูกส่งคืนในอาร์เรย์ดั้งเดิมและไม่ควรใช้โครงสร้างข้อมูลตัวช่วย (เช่นแฮชแท็ก) อย่างไรก็ตามฉันเดาว่าไม่จำเป็นต้องเก็บรักษาคำสั่งซื้อ Update2:สำหรับผู้ที่สงสัยว่าเหตุใดจึงมีข้อ จำกัด ที่ทำไม่ได้นี่เป็นคำถามสัมภาษณ์และจะมีการพูดถึงข้อ จำกัด เหล่านี้ในระหว่างกระบวนการคิดเพื่อดูว่าฉันจะคิดอย่างไร

5
สัญลักษณ์ที่ไม่คุ้นเคยในอัลกอริทึม: ∀หมายถึงอะไร? [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังอ่านเกี่ยวกับอัลกอริทึม (เป็นอัลกอริทึมการค้นหาเส้นทางตาม A *) และมีสัญลักษณ์ทางคณิตศาสตร์ที่ฉันไม่คุ้นเคย: ∀ นี่คือบริบท: v (s) ≥ g (s) = นาทีs'∈pred (s) (v (s ') + c (s', s)) ∀s เริ่มต้น ใครสามารถอธิบายความหมายของ∀?

9
คำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานจากเวกเตอร์ของตัวอย่างใน C ++ โดยใช้ Boost
มีวิธีคำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานสำหรับเวกเตอร์ที่มีตัวอย่างโดยใช้Boostหรือไม่? หรือฉันต้องสร้างตัวสะสมและป้อนเวกเตอร์เข้าไป


9
Bitwise และแทนที่ตัวดำเนินการโมดูลัส
เรารู้ว่าตัวอย่างโมดูโลของกำลังสองสามารถแสดงได้ดังนี้: x % 2 inpower n == x & (2 inpower n - 1). ตัวอย่าง: x % 2 == x & 1 x % 4 == x & 3 x % 8 == x & 7 แล้ว nonpower ทั่วไปของสองจำนวนล่ะ? สมมติว่า: x% 7 ==?
91 algorithm 

7
เวลาพหุนามและเวลาเอกซ์โพเนนเชียล
ใครช่วยอธิบายความแตกต่างระหว่างอัลกอริทึมพหุนามเวลาไม่ใช่พหุนามเวลาและเวลาเอกซ์โพเนนเชียล ตัวอย่างเช่นหากอัลกอริทึมใช้เวลา O (n ^ 2) แล้วจะอยู่ในหมวดหมู่ใด
91 algorithm 

8
จะแปลงอาร์เรย์ไบต์เป็นค่าตัวเลข (Java) ได้อย่างไร?
ฉันมีอาร์เรย์ 8 ไบต์และต้องการแปลงเป็นค่าตัวเลขที่สอดคล้องกัน เช่น byte[] by = new byte[8]; // the byte array is stored in 'by' // CONVERSION OPERATION // return the numeric value ฉันต้องการวิธีที่จะดำเนินการแปลงข้างต้น

20
ฉันจะค้นหาตัวเลขในอาร์เรย์ 2d ที่เรียงจากซ้ายไปขวาและบนลงล่างได้อย่างไร
เมื่อไม่นานมานี้ฉันได้รับคำถามสัมภาษณ์นี้และฉันสงสัยว่าจะมีทางออกที่ดีอย่างไร สมมติว่าฉันได้รับอาร์เรย์ 2d โดยที่ตัวเลขทั้งหมดในอาร์เรย์เรียงลำดับจากซ้ายไปขวาและบนลงล่าง วิธีใดเป็นวิธีที่ดีที่สุดในการค้นหาและตรวจสอบว่ามีหมายเลขเป้าหมายอยู่ในอาร์เรย์หรือไม่ ตอนนี้ความโน้มเอียงแรกของฉันคือการใช้การค้นหาแบบไบนารีเนื่องจากข้อมูลของฉันถูกจัดเรียง ฉันสามารถระบุได้ว่าตัวเลขอยู่ในแถวเดียวในเวลา O (log N) หรือไม่ อย่างไรก็ตามมันเป็น 2 ทิศทางที่ทำให้ฉันผิดหวัง อีกวิธีหนึ่งที่ฉันคิดว่าอาจได้ผลคือเริ่มที่ไหนสักแห่งที่อยู่ตรงกลาง ถ้าค่ากลางน้อยกว่าเป้าหมายของฉันฉันจะมั่นใจได้ว่ามันอยู่ในส่วนสี่เหลี่ยมด้านซ้ายของเมทริกซ์จากตรงกลาง จากนั้นฉันก็เลื่อนไปตามแนวทแยงมุมและตรวจสอบอีกครั้งโดยลดขนาดของสี่เหลี่ยมจัตุรัสที่เป้าหมายอาจอยู่ได้จนกว่าฉันจะปรับให้เข้ากับจำนวนเป้าหมาย ใครมีความคิดที่ดีในการแก้ปัญหานี้? อาร์เรย์ตัวอย่าง: เรียงจากซ้ายไปขวาบนลงล่าง 1 2 4 5 6 2 3 5 7 8 4 6 8 9 10 5 8 9 10 11

7
วิธีติดตั้งระบบแท็ก
ฉันสงสัยว่าวิธีที่ดีที่สุดคือการติดตั้งระบบแท็กเช่นเดียวกับที่ใช้กับ SO ฉันกำลังคิดถึงสิ่งนี้ แต่ไม่สามารถหาโซลูชันที่ปรับขนาดได้ดีได้ ฉันกำลังคิดว่าจะมีวิธีแก้ปัญหาพื้นฐาน 3 ตารางคือมีtagsโต๊ะarticlesโต๊ะและtag_to_articlesโต๊ะ นี่เป็นทางออกที่ดีที่สุดสำหรับปัญหานี้หรือมีทางเลือกอื่นหรือไม่? เมื่อใช้วิธีนี้ตารางจะมีขนาดใหญ่มากและสำหรับการค้นหาสิ่งนี้ไม่ได้มีประสิทธิภาพมากเกินไปฉันคิดว่า ในทางกลับกันไม่สำคัญที่การสืบค้นจะดำเนินการอย่างรวดเร็ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.