คำถามติดแท็ก data-structures

โครงสร้างข้อมูลเป็นวิธีการจัดระเบียบข้อมูลในแบบที่ช่วยให้คุณสมบัติเฉพาะของข้อมูลนั้นถูกสอบถามและ / หรือปรับปรุงอย่างมีประสิทธิภาพ

11
มีคอลเลกชันที่พิมพ์อย่างมากใน Objective-C หรือไม่
ฉันยังใหม่กับการเขียนโปรแกรม Mac / iPhone และ Objective-C ใน C # และ Java เรามี "generics" คลาสการรวบรวมที่สมาชิกสามารถเป็นประเภทที่ประกาศเท่านั้น ตัวอย่างเช่นใน C # Dictionary<int, MyCustomObject> สามารถมีคีย์ที่เป็นจำนวนเต็มและค่าที่เป็นประเภท MyCustomObject เท่านั้น มีกลไกที่คล้ายกันอยู่ใน Objective-C หรือไม่?

12
อนุญาตให้ใช้คีย์ที่ซ้ำกันในคำจำกัดความของแผนภูมิการค้นหาแบบไบนารีหรือไม่
ฉันพยายามค้นหาคำจำกัดความของแผนภูมิการค้นหาแบบไบนารีและฉันค้นหาคำจำกัดความที่แตกต่างกันทุกที่ บางคนบอกว่าสำหรับทรีย่อยที่กำหนดคีย์ลูกด้านซ้ายจะน้อยกว่าหรือเท่ากับรูท บางคนบอกว่าสำหรับทรีย่อยใด ๆ คีย์ลูกที่ถูกต้องจะมีค่ามากกว่าหรือเท่ากับราก และหนังสือโครงสร้างข้อมูลวิทยาลัยเก่าของฉันบอกว่า "ทุกองค์ประกอบมีคีย์และไม่มีสององค์ประกอบที่มีคีย์เดียวกัน" มีคำจำกัดความสากลของ bst หรือไม่? โดยเฉพาะอย่างยิ่งเกี่ยวกับสิ่งที่จะทำกับต้นไม้ที่มีหลายอินสแตนซ์ของคีย์เดียวกัน แก้ไข: บางทีฉันไม่ชัดเจนคำจำกัดความที่ฉันเห็นคือ 1) left <= root <right 2) ซ้าย <root <= ขวา 3) ซ้าย <root <ขวาซึ่งไม่มีคีย์ที่ซ้ำกันอยู่

13
ให้สตริงเป็นตัวเลขหนึ่งล้านส่งคืนตัวเลข 3 หลักที่ซ้ำกันทั้งหมด
ฉันได้สัมภาษณ์กับ บริษัท กองทุนป้องกันความเสี่ยงในนิวยอร์กเมื่อไม่กี่เดือนที่ผ่านมาและโชคไม่ดีที่ฉันไม่ได้รับการฝึกงานในฐานะวิศวกรข้อมูล / ซอฟต์แวร์ (พวกเขายังขอให้วิธีการแก้ปัญหาอยู่ในหลาม) ฉันเมามากขึ้นกับปัญหาการสัมภาษณ์ครั้งแรก ... คำถาม: รับสตริงเป็นล้านตัวเลข (เช่น Pi) เขียนฟังก์ชัน / โปรแกรมที่ส่งกลับตัวเลข 3 หลักซ้ำและจำนวนการทำซ้ำที่มากกว่า 1 ตัวอย่างเช่น: ถ้าสตริงเป็น: 123412345123456ดังนั้นฟังก์ชัน / โปรแกรมจะส่งคืน: 123 - 3 times 234 - 3 times 345 - 2 times พวกเขาไม่ได้ให้คำตอบกับฉันหลังจากที่ฉันสัมภาษณ์ล้มเหลว แต่พวกเขาบอกฉันว่าเวลาในการแก้ปัญหานั้นมีค่าคงที่ 1,000 เนื่องจากผลลัพธ์ที่เป็นไปได้ทั้งหมดอยู่ระหว่าง: 000 -> 999 ตอนนี้ฉันกำลังคิดเกี่ยวกับมันฉันไม่คิดว่ามันเป็นไปได้ที่จะเกิดอัลกอริธึมเวลาคงที่ ใช่ไหม?

5
วิธีการใช้คิวที่มีสามกอง?
ฉันเจอคำถามนี้ในหนังสืออัลกอริทึม ( อัลกอริทึมรุ่นที่ 4โดย Robert Sedgewick และ Kevin Wayne) คิวสามกอง ใช้คิวที่มีสามกองเพื่อให้การดำเนินการแต่ละคิวใช้จำนวนการดำเนินการสแต็กคงที่ (กรณีที่แย่ที่สุด) คำเตือน: ความยากระดับสูง ฉันรู้วิธีสร้างคิวด้วยสแต็ค 2 ชุด แต่ฉันไม่พบวิธีแก้ปัญหาด้วยสแต็ค 3 ตัว ความคิดใด ๆ (โอ้และนี่ไม่ใช่การบ้าน :))

6
ฉันจะสร้างโครงสร้างข้อมูลรายการที่เชื่อมโยงใน Java ได้อย่างไร [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา วิธีที่ดีที่สุดในการสร้างรายการที่เชื่อมโยงใน Java คืออะไร?

11
ฉันควรใช้ HashSet <T> type เมื่อใด
ฉันกำลังสำรวจHashSet&lt;T&gt;ประเภท แต่ฉันไม่เข้าใจว่ามันอยู่ที่ใดในคอลเล็กชัน สามารถใช้แทน a List&lt;T&gt;? ฉันจินตนาการว่าประสิทธิภาพของ a HashSet&lt;T&gt;จะดีขึ้น แต่ฉันไม่เห็นการเข้าถึงองค์ประกอบของแต่ละบุคคล เป็นเพียงการแจงนับเท่านั้น?

9
Copy-on-write คืออะไร?
อยากทราบว่า copy-on-write คืออะไรและใช้ทำอะไร? คำว่า 'copy-on-write array' ถูกกล่าวถึงหลายครั้งในบทแนะนำ Sun JDK แต่ฉันไม่เข้าใจว่ามันหมายถึงอะไร

6
HashMap รับ / ใส่ความซับซ้อน
เราเคยพูดว่าHashMap get/putการดำเนินการคือ O (1) อย่างไรก็ตามขึ้นอยู่กับการใช้งานแฮช แฮชของอ็อบเจ็กต์ดีฟอลต์คือแอดเดรสภายในในฮีป JVM เราแน่ใจหรือไม่ว่าดีพอที่จะอ้างว่าget/putเป็น O (1)? หน่วยความจำที่ใช้ได้เป็นอีกปัญหาหนึ่ง ตามที่ฉันเข้าใจจาก javadocs HashMap load factorควรเป็น 0.75 จะเกิดอะไรขึ้นถ้าเรามีหน่วยความจำไม่เพียงพอใน JVM และload factorเกินขีด จำกัด ? ดังนั้นดูเหมือนว่าจะไม่รับประกัน O (1) มันสมเหตุสมผลหรือว่าฉันพลาดอะไรไป

10
วิธีที่รวดเร็วในการติดตั้งพจนานุกรมในภาษา C
สิ่งหนึ่งที่ฉันพลาดขณะเขียนโปรแกรมใน C คือโครงสร้างข้อมูลพจนานุกรม วิธีใดที่สะดวกที่สุดในการใช้งานใน C? ฉันไม่ได้ต้องการประสิทธิภาพ แต่ง่ายต่อการเขียนโค้ดตั้งแต่เริ่มต้น ฉันไม่ต้องการให้มันเป็นแบบทั่วไปเช่นกัน - บางอย่างเช่น string-&gt; int จะทำ แต่ฉันต้องการให้สามารถจัดเก็บรายการได้ตามจำนวนที่กำหนด โดยมีวัตถุประสงค์เพื่อเป็นการออกกำลังกาย ฉันรู้ว่ามีไลบรารีของบุคคลที่สามที่สามารถใช้ได้ แต่พิจารณาสักครู่ว่าไม่มีอยู่จริง ในสถานการณ์เช่นนี้วิธีใดเป็นวิธีที่เร็วที่สุดที่คุณสามารถใช้พจนานุกรมที่ตรงตามข้อกำหนดข้างต้น

4
golang ทำไมเราไม่มีการกำหนดโครงสร้างข้อมูล [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังพยายามแก้แบบฝึกหัด "The go programming lanaguage" # 1.4 ซึ่งทำให้ฉันต้องมีชุด ฉันสามารถสร้างประเภทชุดได้ แต่ทำไมไม่มีภาษามาด้วย ไปเพราะมาจาก google ซึ่งฝรั่งก็กำเนิดขึ้นด้วยเหตุใดนักออกแบบภาษาจึงไม่เลือกที่จะเพิ่มการรองรับโครงสร้างข้อมูลพื้นฐาน เหตุใดจึงบังคับให้ผู้ใช้ของคุณสร้างการใช้งานของตนเองสำหรับบางสิ่งที่เรียบง่ายเป็นชุด
131 data-structures  go  set 

4
โครงสร้างข้อมูลสำหรับลูกเต๋าที่โหลดหรือไม่
สมมติว่าผมมี n เหลี่ยมตายโหลดที่แต่ละด้านมีบางส่วน k p น่าจะkของขึ้นมาเมื่อผมม้วน ฉันอยากรู้ว่ามีอัลกอริทึมที่ดีสำหรับการจัดเก็บข้อมูลนี้แบบคงที่ (เช่นสำหรับชุดของความน่าจะเป็นคงที่) เพื่อให้ฉันสามารถจำลองการหมุนของแม่พิมพ์แบบสุ่มได้อย่างมีประสิทธิภาพ ขณะนี้ฉันมีทางออก O (lg n) สำหรับปัญหานี้ ความคิดคือการเก็บตารางของความน่าจะเป็นสะสมของ k แรกสำหรับทุก k พวกเขาเพื่อสร้างจำนวนจริงแบบสุ่มในช่วง [0, 1) และทำการค้นหาแบบไบนารีเหนือตารางเพื่อให้ได้ดัชนีที่ใหญ่ที่สุดที่มีการสะสม ค่าไม่มากกว่าค่าที่เลือก ฉันชอบโซลูชันนี้ แต่ดูเหมือนแปลกที่รันไทม์ไม่ได้คำนึงถึงความน่าจะเป็น โดยเฉพาะอย่างยิ่งในกรณีที่สุดขั้วของด้านใดด้านหนึ่งขึ้นมาเสมอหรือค่าที่กระจายอย่างสม่ำเสมอเป็นไปได้ที่จะสร้างผลลัพธ์ของการหมุนใน O (1) โดยใช้วิธีการไร้เดียงสาแม้ว่าวิธีแก้ปัญหาของฉันจะยังคง ใครบ้างมีคำแนะนำสำหรับวิธีการแก้ปัญหานี้ในลักษณะที่ "ปรับตัว" อย่างใดในมัน runtime? แก้ไข : ตามคำตอบของคำถามนี้ฉันได้เขียนบทความที่อธิบายถึงวิธีการมากมายสำหรับปัญหานี้พร้อมกับการวิเคราะห์ของพวกเขา ดูเหมือนว่าการติดตั้งวิธีนามแฝงของ Vose จะให้เวลา process (n) เวลาในการประมวลผลล่วงหน้าและเวลา O (1) ต่อการหมุนตายซึ่งเป็นที่น่าประทับใจอย่างแท้จริง หวังว่านี่จะเป็นประโยชน์ต่อข้อมูลที่มีอยู่ในคำตอบ!

9
เลือกหลายเขตข้อมูลจากรายการใน Linq
ใน ASP.NET C # ฉันมีโครงสร้าง: public struct Data { public int item1; public int item2; public int category_id; public string category_name; } และฉันมีรายชื่อเหล่านั้น ฉันต้องการที่จะเลือกcategory_idและcategory_nameวิ่งDISTINCTและสุดท้ายในORDERBYcategory_name นี่คือสิ่งที่ฉันมีตอนนี้: List&lt;Data&gt; listObject = getData(); string[] catNames = listObject .Select(i=&gt; i.category_name) .Distinct() .OrderByDescending(s =&gt; s) .ToArray(); เห็นได้ชัดว่านี่เป็นเพียงชื่อหมวดหมู่ คำถามของฉันคือฉันจะได้หลายฟิลด์ได้อย่างไรและฉันจะจัดเก็บข้อมูลนี้ในโครงสร้างใด (ไม่ใช่กstring[]) แก้ไข การใช้รายการโครงสร้างไม่ได้กำหนดไว้ในหิน หากจะแนะนำให้เปลี่ยนโครงสร้างข้อมูลสำรองของฉันเพื่อให้การเลือกง่ายขึ้น (ฉันจะเขียนสิ่งเหล่านี้เป็นจำนวนมาก) ฉันยินดีรับคำแนะนำ
128 c#  linq  data-structures 

19
แบ่งคอลเล็กชันออกเป็นส่วน "n" ด้วย LINQ หรือไม่
มีวิธีที่ดีในการแบ่งคอลเลกชันออกเป็นnส่วน ๆ ด้วย LINQ หรือไม่? ไม่จำเป็นต้องเท่ากันแน่นอน นั่นคือฉันต้องการแบ่งคอลเลกชันออกเป็นคอลเลกชั่นย่อยซึ่งแต่ละคอลเลกชั่นมีองค์ประกอบย่อยซึ่งคอลเลกชันสุดท้ายสามารถมอมแมมได้
122 c#  .net  linq  data-structures 

2
โครงสร้างข้อมูล“ ล่วงล้ำ” หมายความว่าอย่างไร
ฉันเคยเห็นคำว่าล่วงล้ำใช้เพื่ออธิบายโครงสร้างข้อมูลเช่นรายการและสแต็ก แต่มันหมายความว่าอย่างไร คุณสามารถยกตัวอย่างรหัสของโครงสร้างข้อมูลที่ล่วงล้ำได้และแตกต่างจากโครงสร้างที่ไม่ล่วงล้ำอย่างไร นอกจากนี้เหตุใดจึงทำให้เป็นการล่วงล้ำ (หรือไม่ล่วงล้ำ) มีประโยชน์อย่างไร? มีข้อเสียอย่างไร?

9
ฉันจะแสดงตาราง hextile / hex ในหน่วยความจำได้อย่างไร
สมมติว่าฉันกำลังสร้างเกมกระดานที่มีตาราง hextile เช่นSettlers of Catan : โปรดทราบว่าแต่ละจุดยอดและขอบอาจมีแอตทริบิวต์ (ถนนและการทรุดตัวด้านบน) ฉันจะสร้างโครงสร้างข้อมูลที่แสดงถึงบอร์ดนี้ได้อย่างไร? รูปแบบในการเข้าถึงเพื่อนบ้านขอบและจุดยอดของกระเบื้องแต่ละแผ่นมีอะไรบ้าง

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