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

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

14
รับกุญแจจาก HashMap ใน Java
ฉันมี Hashmap ใน Java เช่นนี้: private Map<String, Integer> team1 = new HashMap<String, Integer>(); จากนั้นฉันก็เติมมันเช่นนี้: team1.put("United", 5); ฉันจะรับกุญแจได้อย่างไร สิ่งที่ต้องการ: team1.getKey()เพื่อส่งคืน "ยูไนเต็ด"

18
ทดสอบว่ารายการมีค่าเฉพาะใน Clojure
เป็นวิธีที่ดีที่สุดในการทดสอบว่ารายการมีค่าที่กำหนดใน Clojure อะไร โดยเฉพาะอย่างยิ่งพฤติกรรมของcontains?ในปัจจุบันทำให้ฉันสับสน: (contains? '(100 101 102) 101) => false เห็นได้ชัดว่าฉันสามารถเขียนฟังก์ชั่นง่าย ๆ เพื่อสำรวจรายการและทดสอบความเท่าเทียมกัน แต่ต้องมีวิธีมาตรฐานในการทำเช่นนี้หรือไม่?

13
จะหลีกเลี่ยงปัญหา“ พารามิเตอร์มากเกินไป” ในการออกแบบ API ได้อย่างไร
ฉันมีฟังก์ชั่น API นี้: public ResultEnum DoSomeAction(string a, string b, DateTime c, OtherEnum d, string e, string f, out Guid code) ฉันไม่ชอบมัน เนื่องจากลำดับพารามิเตอร์มีความสำคัญเกินความจำเป็น การเพิ่มฟิลด์ใหม่กลายเป็นเรื่องยาก มันยากที่จะเห็นสิ่งที่ถูกส่งผ่าน มันยากกว่าที่จะ refactor method เป็นชิ้นส่วนเล็ก ๆ เพราะมันจะสร้างโอเวอร์เฮดอีกครั้งในการส่งผ่านพารามิเตอร์ทั้งหมดในฟังก์ชั่นย่อย รหัสอ่านยากกว่า ฉันคิดขึ้นมาด้วยความคิดที่ชัดเจนที่สุด: ให้อ็อบเจกต์ห่อหุ้มข้อมูลแล้วส่งไปรอบ ๆ แทนที่จะส่งแต่ละพารามิเตอร์ทีละหนึ่ง นี่คือสิ่งที่ฉันมาด้วย: public class DoSomeActionParameters { public string A; public string B; public DateTime C; public …

14
"dict ที่แช่แข็ง" จะเป็นอย่างไร?
ชุดที่แช่แข็งเป็น frozenet รายการแช่แข็งอาจเป็น tuple คำสั่งแช่แข็งจะเป็นอย่างไร? dict ที่เปลี่ยนแปลงไม่ได้ hashable ฉันคิดว่ามันอาจจะเป็นอะไรที่คล้ายcollections.namedtupleๆ กัน แต่นั่นก็เหมือนทict-แช่แข็งคีย์ (dict แบบครึ่งแข็ง) ไม่ใช่เหรอ A "frozendict" ควรพจนานุกรมแช่แข็งมันควรจะมีkeys, values, getฯลฯ และการสนับสนุนin, forฯลฯ อัปเดต: * มีอยู่: https://www.python.org/dev/peps/pep-0603

7
เหตุใดฉันจึงควรใช้ Deque over Stack?
ฉันต้องการStackโครงสร้างข้อมูลสำหรับกรณีการใช้งานของฉัน ฉันควรจะสามารถผลักรายการในโครงสร้างข้อมูลและฉันต้องการดึงรายการสุดท้ายจากกอง JavaDoc สำหรับกองพูดว่า: ชุดการดำเนินการสแต็ก LIFO ที่สมบูรณ์และสอดคล้องกันมากขึ้นถูกจัดเตรียมโดยอินเตอร์เฟส Deque และการประยุกต์ใช้ซึ่งควรใช้ในการกำหนดค่าตามความชอบของคลาสนี้ ตัวอย่างเช่น: Deque<Integer> stack = new ArrayDeque<>(); ฉันไม่ต้องการพฤติกรรมการซิงโครไนซ์ที่นี่อย่างแน่นอนเพราะฉันจะใช้โครงสร้างข้อมูลนี้กับวิธีการ นอกจากนี้ทำไมฉันถึงชอบที่นี่Dequeมากกว่าStack PS: javadoc จาก Deque พูดว่า: Deques สามารถใช้เป็นกองซ้อน LIFO (Last-In-First-Out) ควรใช้อินเทอร์เฟซนี้ในการกำหนดลักษณะคลาสสแต็กดั้งเดิม

30
วิธีสร้างการแม็พแบบกระชับที่สุด n → isprime (n) สูงสุดถึงขีด จำกัด N?
โดยธรรมชาติแล้วbool isprime(number)จะมีโครงสร้างข้อมูลที่ฉันสามารถสืบค้นได้ ฉันกำหนดอัลกอริธึมที่ดีที่สุดเพื่อเป็นอัลกอริธึมที่สร้างโครงสร้างข้อมูลที่มีการใช้หน่วยความจำต่ำสุดสำหรับช่วง (1, N] โดยที่ N เป็นค่าคงที่ เพียงตัวอย่างของสิ่งที่ฉันกำลังมองหา: ฉันสามารถแทนตัวเลขคี่ ด้วยหนึ่งบิตเช่นสำหรับช่วงตัวเลขที่กำหนด (1, 10] เริ่มต้นที่ 3:1110 พจนานุกรมต่อไปนี้สามารถบีบได้มากกว่านี้ใช่ไหม ฉันสามารถกำจัดทวีคูณของห้าด้วยงานบางอย่าง แต่ตัวเลขที่ลงท้ายด้วย 1, 3, 7 หรือ 9 ต้องอยู่ในอาร์เรย์ของบิต ฉันจะแก้ปัญหาได้อย่างไร

5
มีการตั้งค่าอย่างไร ()
ฉันเคยเห็นคนพูดว่าsetวัตถุในหลามมี O (1) การตรวจสอบสมาชิก พวกเขานำมาใช้ภายในเพื่ออนุญาตสิ่งนี้ได้อย่างไร โครงสร้างข้อมูลชนิดใดที่ใช้? การใช้งานนั้นมีความหมายอะไรอีกบ้าง ทุกคำตอบที่นี่ให้ความกระจ่างจริง ๆ แต่ฉันยอมรับได้เพียงคำตอบเดียวดังนั้นฉันจะไปกับคำตอบที่ใกล้เคียงที่สุดกับคำถามดั้งเดิมของฉัน ขอบคุณสำหรับข้อมูล!

4
มีใครใช้งานฟีโบนัชชี - กองอย่างมีประสิทธิภาพจริงหรือไม่?
Fibonacci-Heapเคยมีใครบ้างในพวกคุณบ้างไหม? ฉันทำไม่กี่ปีที่ผ่านมา แต่มันก็มีหลายคำสั่งที่ช้ากว่าการใช้ BinHeaps แบบอาเรย์ ย้อนกลับไปฉันคิดว่ามันเป็นบทเรียนที่มีค่าในการวิจัยที่ไม่ดีเท่าที่ควรจะเป็น อย่างไรก็ตามงานวิจัยจำนวนมากอ้างว่าเวลาทำงานของอัลกอริทึมของพวกเขาขึ้นอยู่กับการใช้ Fibonacci-Heap คุณเคยสร้างการใช้งานที่มีประสิทธิภาพหรือไม่? หรือคุณทำงานกับชุดข้อมูลขนาดใหญ่จนฟีโบนักชี - กองมีประสิทธิภาพมากขึ้นหรือไม่? ถ้าเป็นเช่นนั้นรายละเอียดบางอย่างจะได้รับการชื่นชม

11
เหตุใดจึงต้องเริ่ม ArrayList ด้วยความจุเริ่มต้น
ตัวสร้างตามปกติของArrayListคือ: ArrayList<?> list = new ArrayList<>(); แต่ยังมีคอนสตรัคเตอร์ที่โอเวอร์โหลดพร้อมพารามิเตอร์สำหรับความจุเริ่มต้น: ArrayList<?> list = new ArrayList<>(20); ทำไมจึงเป็นประโยชน์ในการสร้างArrayListความจุเริ่มต้นเมื่อเราสามารถผนวกเข้ากับมันได้ตามที่เราต้องการ?

12
ทำไมทุกคนจะใช้ชุดแทน unordered_set
C ++ 0x กำลังแนะนำunordered_setซึ่งมีอยู่ในboostและที่อื่น ๆ อีกมากมาย สิ่งที่ฉันเข้าใจคือunordered_setตารางแฮชที่มีO(1)ความซับซ้อนในการค้นหา ในทางตรงกันข้ามsetไม่มีอะไรเลยนอกจากต้นไม้ที่มีlog(n)ความซับซ้อนในการค้นหา ทำไมทุกคนบนโลกจะใช้setแทนunordered_set? เช่นมีความต้องการsetอีกต่อไปหรือไม่

10
อะไรคือความแตกต่างระหว่างโครงสร้างข้อมูล Tree และ Graph?
ในทางวิชาการโครงสร้างข้อมูลโครงสร้างข้อมูลและกราฟแตกต่างกันอย่างไร แล้วการค้นหาตามต้นไม้และการค้นหาตามกราฟล่ะ?

22
ใช้กองซ้อนโดยใช้สองคิว
คำถามที่คล้ายกันก็ถามว่าก่อนหน้านี้มีแต่คำถามที่นี่เป็นสิ่งที่ตรงกันข้ามของมันใช้สองคิวเป็นกอง คำถาม... ได้รับสองคิวกับการดำเนินงานมาตรฐาน ( enqueue, dequeue, isempty, size) ใช้กองกับการดำเนินงานมาตรฐาน ( pop, push, isempty, size) ควรมีโซลูชันสองรุ่น เวอร์ชันA : สแต็กควรมีประสิทธิภาพเมื่อกดไอเท็ม และ เวอร์ชันB : สแต็กควรมีประสิทธิภาพเมื่อเปิดไอเท็ม ฉันสนใจอัลกอริทึมมากกว่าการใช้ภาษาเฉพาะใด ๆ อย่างไรก็ตามฉันยินดีต้อนรับวิธีแก้ปัญหาที่แสดงเป็นภาษาที่ฉันคุ้นเคย (ชวา,ค#,หลาม,VB,จาวาสคริปต์,PHP)

8
ฉันจะสร้างอินสแตนซ์ของวัตถุคิวใน Java ได้อย่างไร
เมื่อฉันลอง: Queue<Integer> q = new Queue<Integer>(); คอมไพเลอร์ให้ข้อผิดพลาดแก่ฉัน ความช่วยเหลือใด ๆ นอกจากนี้หากฉันต้องการเริ่มต้นคิวฉันต้องใช้วิธีการของคิวหรือไม่

4
รับคุณสมบัติ "มูลค่า" ในการจัดกลุ่ม IGG
ฉันมีโครงสร้างข้อมูลเช่น public DespatchGroup(DateTime despatchDate, List<Products> products); และฉันพยายามทำ ... var list = new List<DespatchGroup>(); foreach (var group in dc.GetDespatchedProducts().GroupBy(i => i.DespatchDate)) { // group.Values is not correct... how do I write this? list.Add(new DespatchGroup(group.Key, group.Values); } เห็นได้ชัดว่าฉันไม่เข้าใจIGroupingเพราะฉันไม่สามารถเห็นวิธีการบันทึกข้อมูลภายในกลุ่มได้!

8
ฉันจะเลือกระหว่าง Hash Table กับ Trie (Prefix Tree) ได้อย่างไร
ดังนั้นถ้าฉันต้องเลือกระหว่างตารางแฮชหรือต้นไม้นำหน้าอะไรคือปัจจัยแบ่งแยกที่จะทำให้ฉันเลือกอย่างใดอย่างหนึ่ง จากมุมมองที่ไร้เดียงสาของฉันดูเหมือนว่าการใช้ Trie จะมีค่าใช้จ่ายพิเศษบางอย่างเนื่องจากไม่ได้จัดเก็บเป็นอาร์เรย์ แต่ในแง่ของเวลาทำงาน (สมมติว่าคีย์ที่ยาวที่สุดคือคำภาษาอังกฤษที่ยาวที่สุด) โดยพื้นฐานแล้วอาจเป็น O (1) (สัมพันธ์กับขอบเขตบน) บางทีคำภาษาอังกฤษที่ยาวที่สุดคือ 50 ตัวอักษร? ตารางแฮชมีรูปลักษณ์ทันทีขึ้นเมื่อคุณได้รับดัชนี การแฮ็กคีย์เพื่อรับดัชนี แต่ดูเหมือนว่าจะทำได้อย่างง่ายดายเกือบ 50 ขั้นตอน ใครช่วยให้มุมมองที่มีประสบการณ์มากกว่านี้แก่ฉันได้ไหม ขอบคุณ!

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