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

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

12
ฉันจะตรวจสอบว่าสตริงที่ทำจากสตริงย่อยเดียวกันทั้งหมดได้อย่างไร
ฉันต้องสร้างฟังก์ชั่นที่รับสายและมันควรจะกลับมาtrueหรือไม่ก็falseขึ้นอยู่กับว่าอินพุตประกอบด้วยลำดับอักขระซ้ำแล้วซ้ำอีก ความยาวของสตริงที่กำหนดนั้นมีค่ามากกว่า1และลำดับอักขระต้องมีการทำซ้ำอย่างน้อยหนึ่งครั้ง "aa" // true(entirely contains two strings "a") "aaa" //true(entirely contains three string "a") "abcabcabc" //true(entirely containas three strings "abc") "aba" //false(At least there should be two same substrings and nothing more) "ababa" //false("ab" exists twice but "a" is extra so false) ฉันได้สร้างฟังก์ชั่นด้านล่าง: function check(str){ if(!(str.length && str.length - …

25
คำนวณค่ามัธยฐานของตัวเลขพันล้าน
หากคุณมีตัวเลขหนึ่งพันล้านเลขหมายและคอมพิวเตอร์หนึ่งร้อยเครื่องวิธีใดที่ดีที่สุดในการหาค่ามัธยฐานของตัวเลขเหล่านี้ ทางออกหนึ่งที่ฉันมีคือ: แบ่งชุดเท่า ๆ กันระหว่างคอมพิวเตอร์ จัดเรียง หาค่ามัธยฐานสำหรับแต่ละชุด จัดเรียงชุดค่ามัธยฐาน รวมสองชุดในแต่ละครั้งจากค่ามัธยฐานต่ำสุดถึงสูงสุด หากเราทำการm1 < m2 < m3 ...รวมก่อนSet1และSet2และในเซตผลลัพธ์เราสามารถทิ้งตัวเลขทั้งหมดที่ต่ำกว่าค่ามัธยฐานของSet12(รวม) ได้ ดังนั้น ณ เวลาใดก็ตามเรามีเซตขนาดเท่ากัน โดยวิธีนี้ไม่สามารถทำได้ในลักษณะคู่ขนาน ความคิดใด ๆ ?

30
ฉันจะตรวจสอบได้อย่างไรว่าตัวเลขนั้นเป็นพาลินโดรม?
ฉันจะตรวจสอบได้อย่างไรว่าตัวเลขนั้นเป็นพาลินโดรม? ภาษาใดก็ได้ อัลกอริทึมใด ๆ (ยกเว้นอัลกอริทึมในการทำให้ตัวเลขเป็นสตริงแล้วย้อนกลับสตริง)

7
ฉันควรใช้ Java Collection ใด
ในคำถามนี้ฉันจะเลือกคอนเทนเนอร์ไลบรารีมาตรฐานใน C ++ 11 อย่างมีประสิทธิภาพได้อย่างไร เป็นผังงานที่มีประโยชน์เพื่อใช้เมื่อเลือกคอลเลกชัน C ++ ฉันคิดว่านี่เป็นแหล่งข้อมูลที่มีประโยชน์สำหรับผู้ที่ไม่แน่ใจว่าควรใช้คอลเลคชันใดดังนั้นฉันจึงพยายามค้นหาผังงานที่คล้ายกันสำหรับ Java และไม่สามารถทำได้ มีทรัพยากรและ "ข้อมูลสรุป" อะไรบ้างที่ช่วยให้ผู้คนเลือกคอลเล็กชันที่เหมาะสมเพื่อใช้เมื่อเขียนโปรแกรมใน Java ผู้คนรู้ได้อย่างไรว่าควรใช้ List, Set และ Map อะไร

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

9
ฟังก์ชันแฮชสำหรับสตริง
ฉันกำลังทำงานกับตารางแฮชในภาษาซีและฉันกำลังทดสอบฟังก์ชันแฮชสำหรับสตริง ฟังก์ชั่นแรกที่ฉันได้ลองคือเพิ่มรหัส ascii และใช้ modulo (% 100) แต่ฉันได้ผลลัพธ์ที่ไม่ดีกับการทดสอบข้อมูลครั้งแรก: 40 การชนกันสำหรับ 130 คำ ข้อมูลอินพุตสุดท้ายจะมี 8,000 คำ (เป็นพจนานุกรมที่เก็บไว้ในไฟล์) ตารางแฮชถูกประกาศเป็นตาราง int [10000] และมีตำแหน่งของคำในไฟล์ txt คำถามแรกคืออัลกอริทึมใดที่ดีที่สุดสำหรับการแฮชสตริง และจะกำหนดขนาดของตารางแฮชได้อย่างไร? ขอบคุณล่วงหน้า ! :-)

19
กำไรจากการขายครั้งเดียวสูงสุด
สมมติว่าเราได้รับอาร์เรย์ของจำนวนเต็มnแทนราคาหุ้นในวันเดียว เราต้องการหาคู่(buyDay, sellDay)โดยbuyDay ≤ sellDayเช่นว่าถ้าเราซื้อหุ้นในbuyDayและขายในsellDayเราจะเพิ่มกำไรให้สูงสุด เห็นได้ชัดว่ามีโซลูชันO (n 2 )สำหรับอัลกอริทึมโดยการลองใช้คู่(buyDay, sellDay) ที่เป็นไปได้ทั้งหมดและใช้สิ่งที่ดีที่สุดจากทั้งหมด อย่างไรก็ตามมีอัลกอริทึมที่ดีกว่าหรืออาจเป็นอัลกอริทึมที่ทำงานในเวลาO (n) ?

13
อัลกอริทึมเพื่อสร้างคำไขว้
เมื่อพิจารณาถึงรายการคำคุณจะจัดเรียงคำเหล่านี้ให้เป็นตารางคำไขว้ได้อย่างไร มันไม่จำเป็นต้องเป็นเหมือนปริศนาอักษรไขว้ที่ "เหมาะสม" ซึ่งเป็นแบบสมมาตรหรืออะไรทำนองนั้น: โดยพื้นฐานแล้วเพียงแค่แสดงตำแหน่งเริ่มต้นและทิศทางสำหรับแต่ละคำ

30
ค้นหาคู่ขององค์ประกอบจากอาร์เรย์ที่มีผลรวมเท่ากับจำนวนที่กำหนด
กำหนดอาร์เรย์ของจำนวนเต็ม n และกำหนดจำนวน X ให้ค้นหาคู่ขององค์ประกอบที่ไม่ซ้ำกันทั้งหมด (a, b) ซึ่งผลรวมเท่ากับ X ต่อไปนี้เป็นวิธีแก้ปัญหาของฉันมันคือ O (nLog (n) + n) แต่ฉันไม่แน่ใจว่าเหมาะสมหรือไม่ int main(void) { int arr [10] = {1,2,3,4,5,6,7,8,9,0}; findpair(arr, 10, 7); } void findpair(int arr[], int len, int sum) { std::sort(arr, arr+len); int i = 0; int j = len -1; while( i < …
122 algorithm 

8
การเรียกซ้ำหางทำงานอย่างไร?
ฉันเกือบจะเข้าใจว่าการเรียกซ้ำหางทำงานอย่างไรและความแตกต่างระหว่างการเรียกซ้ำแบบปกติ ฉันเพียง แต่ไม่เข้าใจว่าทำไมมันไม่จำเป็นต้องมีสแต็คที่ต้องจำอยู่กลับ // tail recursion int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * n); } int factorial (int n) { return fac_times (n, 1); } // normal recursion int factorial (int n) { if (n == 0) …

13
การค้นหารายการที่ซ้ำกันในเวลา O (n) และช่องว่าง O (1)
อินพุต: กำหนดอาร์เรย์ขององค์ประกอบ n ซึ่งมีองค์ประกอบตั้งแต่ 0 ถึง n-1 โดยตัวเลขเหล่านี้จะปรากฏกี่ครั้งก็ได้ เป้าหมาย: เพื่อค้นหาตัวเลขที่เกิดซ้ำเหล่านี้ใน O (n) และใช้พื้นที่หน่วยความจำคงที่เท่านั้น ตัวอย่างเช่นให้ n เป็น 7 และอาร์เรย์เป็น {1, 2, 3, 1, 3, 0, 6} คำตอบควรเป็น 1 & 3 ฉันตรวจสอบคำถามที่คล้ายกันที่นี่ แต่คำตอบใช้โครงสร้างข้อมูลบางอย่างเช่น HashSetฯลฯ อัลกอริทึมที่มีประสิทธิภาพเหมือนกันหรือไม่?
121 c++  c  algorithm 

16
คุณจัดเรียงอาร์เรย์ในหลายคอลัมน์ได้อย่างไร?
ฉันมีอาร์เรย์หลายมิติ อาร์เรย์หลักคืออาร์เรย์ของ [publicationID][publication_name][ownderID][owner_name] สิ่งที่ฉันพยายามที่จะทำคือการจัดเรียงอาร์เรย์โดยแล้วโดยowner_name publication_nameฉันรู้ว่าใน JavaScript คุณมีArray.sort()ซึ่งคุณสามารถใส่ฟังก์ชันที่กำหนดเองได้ในกรณีของฉันฉันมี: function mysortfunction(a, b) { var x = a[3].toLowerCase(); var y = b[3].toLowerCase(); return ((x < y) ? -1 : ((x > y) ? 1 : 0)); } นี่คือการปรับเพียงการเรียงลำดับในคอลัมน์หนึ่งคือ OWNER_NAME แต่ฉันจะปรับเปลี่ยนการจัดเรียงบนowner_nameแล้วpublication_name?

15
กระจาย n จุดบนทรงกลมอย่างเท่าเทียมกัน
ฉันต้องการอัลกอริทึมที่สามารถกำหนดตำแหน่งรอบ ๆ ทรงกลมสำหรับ N พอยต์ (อาจน้อยกว่า 20) ที่กระจายออกไปอย่างคลุมเครือ ไม่จำเป็นต้องมี "ความสมบูรณ์แบบ" แต่ฉันแค่ต้องการมันจึงไม่มีสิ่งใดมารวมกัน คำถามนี้ให้รหัสที่ดี แต่ฉันไม่สามารถหาวิธีสร้างเครื่องแบบนี้ได้เนื่องจากดูเหมือนจะสุ่ม 100% บล็อกโพสต์ที่แนะนำนี้มีสองวิธีในการป้อนจำนวนจุดบนทรงกลม แต่อัลกอริทึมSaff และ Kuijlaarsอยู่ในรหัส psuedocode ที่ฉันสามารถถอดเสียงได้และตัวอย่างโค้ดที่ฉันพบมี "node [k]" ซึ่งฉันทำไม่ได้ ดูอธิบายและทำลายความเป็นไปได้นั้น ตัวอย่างบล็อกที่สองคือ Golden Section Spiral ซึ่งทำให้ฉันได้ผลลัพธ์ที่แปลกประหลาดโดยไม่มีวิธีที่ชัดเจนในการกำหนดรัศมีคงที่ อัลกอริทึมจากคำถามนี้ดูเหมือนจะใช้งานได้ แต่ฉันไม่สามารถปะติดปะต่อสิ่งที่อยู่ในหน้านั้นเป็น psuedocode หรืออะไรก็ได้ คำถามอื่น ๆ อีกสองสามหัวข้อที่ฉันพบพูดถึงการกระจายสม่ำเสมอแบบสุ่มซึ่งเพิ่มระดับความซับซ้อนที่ฉันไม่กังวล ฉันขอโทษที่นี่เป็นคำถามโง่ ๆ แต่ฉันต้องการแสดงให้เห็นว่าฉันดูยากจริงๆและยังคิดสั้น ดังนั้นสิ่งที่ฉันกำลังมองหาคือ pseudocode ง่าย ๆ ที่จะกระจายจุด N ให้เท่า ๆ กันรอบ ๆ หน่วยทรงกลมซึ่งจะส่งกลับในพิกัดทรงกลมหรือคาร์ทีเซียน …

6
เหตุใดวิธี Arrays.sort ของ Java จึงใช้อัลกอริธึมการเรียงลำดับที่แตกต่างกันสองแบบสำหรับประเภทต่างๆ
Arrays.sortวิธีการของ Java 6 ใช้ Quicksort สำหรับอาร์เรย์ของ primitives และผสานการเรียงลำดับสำหรับอาร์เรย์ของวัตถุ ฉันเชื่อว่า Quicksort ส่วนใหญ่เร็วกว่าการจัดเรียงแบบผสานและใช้หน่วยความจำน้อยกว่า การทดลองของฉันสนับสนุนแม้ว่าอัลกอริทึมทั้งสองจะเป็น O (n log (n)) เหตุใดจึงใช้อัลกอริทึมที่แตกต่างกันสำหรับประเภทต่างๆ

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

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