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

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

14
พื้นที่รวมของวงกลมที่ทับซ้อนกัน
ฉันเพิ่งเจอปัญหาที่ฉันมีวงกลมสี่วง (จุดกึ่งกลางและรัศมี) และต้องคำนวณพื้นที่ของการรวมกันของวงกลมเหล่านี้ ภาพตัวอย่าง: สำหรับวงกลมสองวงมันค่อนข้างง่าย ฉันสามารถคำนวณเศษส่วนของพื้นที่วงกลมแต่ละวงที่ไม่อยู่ในสามเหลี่ยมแล้วคำนวณพื้นที่ของสามเหลี่ยม แต่มีอัลกอริทึมที่ชาญฉลาดที่ฉันสามารถใช้ได้เมื่อมีวงกลมมากกว่าสองวงหรือไม่?
107 algorithm  geometry  area 

2
อธิบายการแบ่งส่วนภาพโดยใช้ค่าเฉลี่ยกะ
ใครก็ได้โปรดช่วยฉันทำความเข้าใจว่าการแบ่งส่วนของค่าเฉลี่ยกะทำงานอย่างไร นี่คือเมทริกซ์ 8x8 ที่ฉันเพิ่งสร้างขึ้นมา 103 103 103 103 103 103 106 104 103 147 147 153 147 156 153 104 107 153 153 153 153 153 153 107 103 153 147 96 98 153 153 104 107 156 153 97 96 147 153 107 103 153 153 147 156 153 …

17
จะหาองค์ประกอบที่เล็กที่สุด kth ในการรวมอาร์เรย์สองอาร์เรย์ได้อย่างไร
นี่คือคำถามการบ้าน พวกเขาบอกว่ามันจะใช้เวลาO(logN + logM)ที่NและMมีความยาวอาร์เรย์ มาตั้งชื่ออาร์เรย์aและb. เห็นได้ชัดว่าเราสามารถเพิกเฉยได้ทั้งหมดa[i]และb[i]ที่ไหน i> k แรกให้เปรียบเทียบและa[k/2] b[k/2]ให้b[k/2]> a[k/2]. ดังนั้นเราสามารถทิ้งทั้งหมดได้b[i]โดยที่ i> k / 2 ตอนนี้เรามีทั้งหมดa[i]แล้วโดยที่ i <k และทั้งหมดb[i]ที่ฉัน <k / 2 เพื่อค้นหาคำตอบ ขั้นตอนต่อไปคืออะไร?

15
เป็นไปได้ไหมที่จะลดความซับซ้อน (x == 0 || x == 1) ลงในการดำเนินการเดียว?
ดังนั้นฉันจึงพยายามเขียนเลขที่nในลำดับฟีโบนักชีในฟังก์ชันที่กะทัดรัดที่สุด: public uint fibn ( uint N ) { return (N == 0 || N == 1) ? 1 : fibn(N-1) + fibn(N-2); } แต่ฉันสงสัยว่าจะทำให้สิ่งนี้กะทัดรัดและมีประสิทธิภาพมากขึ้นได้หรือไม่โดยการเปลี่ยน (N == 0 || N == 1) เป็นการเปรียบเทียบเพียงครั้งเดียว มีการดำเนินการกะบิตแฟนซีที่สามารถทำได้หรือไม่?

11
มีอัลกอริทึมใดใน c # ที่จะทำให้เป็นเอกพจน์ - พหูพจน์ได้หรือไม่?
มีอัลกอริทึมใดใน c # ที่จะทำให้เป็นเอกพจน์ - พหูพจน์ (ในภาษาอังกฤษ) หรือมีไลบรารี. net เพื่อทำสิ่งนี้ (อาจเป็นภาษาอื่นด้วย)
106 c#  algorithm 

14
จำนวนอักขระสูงสุดโดยใช้การกดแป้นพิมพ์ A, Ctrl + A, Ctrl + C และ Ctrl + V
นี่คือคำถามสัมภาษณ์จาก google ฉันไม่สามารถแก้มันได้ด้วยตัวเอง ใครช่วยส่องแสงบ้าง เขียนโปรแกรมเพื่อพิมพ์ลำดับของการกดแป้นพิมพ์เพื่อให้ได้จำนวนอักขระสูงสุด 'A คุณได้รับอนุญาตให้ใช้เพียง 4 ปุ่ม: A, Ctrl+ A, Ctrl+ Cและ+Ctrl Vอนุญาตให้กดแป้นพิมพ์ N เท่านั้น Ctrlอักขระ + ทั้งหมดถือเป็นการกดแป้นพิมพ์หนึ่งครั้งดังนั้นCtrl+ จึงAเป็นการกดแป้นพิมพ์หนึ่งครั้ง ตัวอย่างเช่นลำดับA, Ctrl+ A, Ctrl+ C, Ctrl+ Vสร้าง A สองตัวใน 4 การกดแป้นพิมพ์ Ctrl + A คือเลือกทั้งหมด Ctrl + C คือ Copy Ctrl + V คือ Paste ฉันเรียนคณิตศาสตร์ สำหรับ N ใด …
106 algorithm 

6
อะไรจะทำให้อัลกอริทึมมีความซับซ้อน O (log n)
ความรู้เกี่ยวกับ big-O ของฉันมี จำกัด และเมื่อคำบันทึกปรากฏขึ้นในสมการมันก็ยิ่งทำให้ฉันผิดหวัง ใครช่วยอธิบายให้ฉันเข้าใจง่ายๆว่าO(log n)อัลกอริทึมคืออะไร? ลอการิทึมมาจากไหน? สิ่งนี้เกิดขึ้นโดยเฉพาะเมื่อฉันพยายามแก้คำถามฝึกหัดกลางภาค: ให้ X (1..n) และ Y (1..n) ประกอบด้วยรายการจำนวนเต็มสองรายการโดยแต่ละรายการเรียงลำดับแบบไม่ลดทอน ให้อัลกอริทึม - เวลา O (log n) เพื่อค้นหาค่ามัธยฐาน (หรือจำนวนเต็มน้อยที่สุดที่ n) ขององค์ประกอบที่รวมกัน 2n ทั้งหมด เช่น X = (4, 5, 7, 8, 9) และ Y = (3, 5, 8, 9, 10) จากนั้น 7 คือค่ามัธยฐานของรายการรวม (3, 4, 5, …

16
การแปลงการแจกแจงแบบสม่ำเสมอเป็นการแจกแจงแบบปกติ
ฉันจะแปลงการแจกแจงแบบสม่ำเสมอได้อย่างไร (เนื่องจากเครื่องกำเนิดตัวเลขสุ่มส่วนใหญ่สร้างขึ้นเช่นระหว่าง 0.0 ถึง 1.0) เป็นการแจกแจงปกติ จะเกิดอะไรขึ้นถ้าฉันต้องการค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานที่ฉันเลือก?

5
การปัดเศษวัตถุ DateTime
ฉันต้องการปัดเศษวันที่ / เวลาเป็นช่วงเวลาที่ใกล้ที่สุดสำหรับแอปพลิเคชันสร้างแผนภูมิ ฉันต้องการลายเซ็นวิธีการขยายดังต่อไปนี้เพื่อให้การปัดเศษได้รับความแม่นยำทุกระดับ: static DateTime Round(this DateTime date, TimeSpan span); แนวคิดก็คือถ้าฉันผ่านไปในช่วงเวลาสิบนาทีมันจะปัดเศษเป็นช่วงสิบนาทีที่ใกล้ที่สุด ฉันไม่สามารถเข้าใจการใช้งานได้และหวังว่าพวกคุณคนหนึ่งจะเคยเขียนหรือใช้สิ่งที่คล้ายกันมาก่อน ฉันคิดว่าการใช้งานพื้นเพดานหรือที่ใกล้ที่สุดก็ดี ความคิดใด ๆ ? แก้ไข: ขอบคุณ @tvanfosson & @ShuggyCoUk การใช้งานมีลักษณะดังนี้: public static class DateExtensions { public static DateTime Round(this DateTime date, TimeSpan span) { long ticks = (date.Ticks + (span.Ticks / 2) + 1)/ span.Ticks; return new …
106 c#  algorithm 


2
อะไรจะทำให้อัลกอริทึมมีความซับซ้อน O (log log n)
คำถามก่อนหน้านี้กล่าวถึงปัจจัยบางประการที่อาจทำให้อัลกอริทึมมีความซับซ้อน O (log n) อะไรจะทำให้อัลกอริทึมมีความซับซ้อนของเวลา O (log log n)?

22
ตัวแยกวิเคราะห์สมการ (นิพจน์) ที่มีลำดับความสำคัญ?
ฉันได้พัฒนาตัวแยกวิเคราะห์สมการโดยใช้อัลกอริธึมสแต็กแบบง่ายที่จะจัดการตัวดำเนินการไบนารี (+, -, |, &, *, / ฯลฯ ) ตัวดำเนินการยูนารี (!) และวงเล็บ อย่างไรก็ตามการใช้วิธีนี้ทำให้ทุกอย่างมีลำดับความสำคัญเหมือนกันโดยจะประเมินจากซ้ายไปขวาโดยไม่คำนึงถึงตัวดำเนินการแม้ว่าจะบังคับใช้ลำดับความสำคัญได้โดยใช้วงเล็บก็ตาม ตอนนี้ "1 + 11 * 5" จะคืนค่า 60 ไม่ใช่ 56 อย่างที่คาดไว้ แม้ว่าสิ่งนี้จะเหมาะกับโครงการปัจจุบัน แต่ฉันต้องการมีกิจวัตรวัตถุประสงค์ทั่วไปที่สามารถใช้สำหรับโครงการในภายหลังได้ แก้ไขเพื่อความชัดเจน: อัลกอริทึมที่ดีสำหรับการแยกวิเคราะห์สมการที่มีลำดับความสำคัญคืออะไร? ฉันสนใจสิ่งที่ง่ายในการติดตั้งและเข้าใจว่าฉันสามารถเขียนโค้ดด้วยตัวเองเพื่อหลีกเลี่ยงปัญหาการออกใบอนุญาตกับโค้ดที่มี ไวยากรณ์: ฉันไม่เข้าใจคำถามไวยากรณ์ - ฉันเขียนด้วยมือ ง่ายพอที่ฉันไม่เห็นความจำเป็นสำหรับ YACC หรือ Bison ฉันแค่ต้องคำนวณสตริงด้วยสมการเช่น "2 + 3 * (42/13)" ภาษา: ฉันกำลังทำสิ่งนี้ในภาษา C แต่ฉันสนใจอัลกอริทึมไม่ใช่วิธีแก้ปัญหาเฉพาะภาษา C อยู่ในระดับต่ำพอที่จะแปลงเป็นภาษาอื่นได้ง่ายหากจำเป็น ตัวอย่างรหัส …

2
อาร์เรย์ JavaScript ขนาดใหญ่
อาร์เรย์ใน JavaScript สามารถแก้ไขได้ง่ายมากโดยการเพิ่มและลบรายการ ค่อนข้างปกปิดข้อเท็จจริงที่ว่าอาร์เรย์ภาษาส่วนใหญ่มีขนาดคงที่และต้องการการดำเนินการที่ซับซ้อนในการปรับขนาด ดูเหมือนว่า JavaScript ทำให้ง่ายต่อการเขียนโค้ดอาร์เรย์ที่มีประสิทธิภาพต่ำ สิ่งนี้นำไปสู่คำถาม: ประสิทธิภาพใด (ในแง่ของความซับซ้อนของเวลา O ขนาดใหญ่) ที่ฉันสามารถคาดหวังได้จากการใช้งาน JavaScript เกี่ยวกับประสิทธิภาพของอาร์เรย์ ฉันคิดว่าการใช้งาน JavaScript ที่สมเหตุสมผลทั้งหมดมี O ขนาดใหญ่ดังต่อไปนี้ การเข้าถึง - O (1) ต่อท้าย - O (n) ล่วงหน้า - O (n) การแทรก - O (n) การลบ - O (n) การแลกเปลี่ยน - O (1) JavaScript ให้คุณเติมอาร์เรย์ล่วงหน้าตามขนาดที่กำหนดโดยใช้new Array(length)ไวยากรณ์ (คำถามโบนัส: การสร้างอาร์เรย์ในลักษณะนี้ O …

26
วิธีการแปลงลอยเป็นเศษส่วนที่มนุษย์อ่านได้?
สมมติว่าเรามีเราต้องเอาท์พุท0.33 ถ้าเรามีเราต้องเอาท์พุท1/30.42/5 แนวคิดคือการทำให้มนุษย์อ่านได้เพื่อให้ผู้ใช้เข้าใจ " x parts out of y " เป็นวิธีที่ดีขึ้นในการทำความเข้าใจข้อมูล ฉันรู้ว่าเปอร์เซ็นต์เป็นสิ่งทดแทนที่ดี แต่ฉันสงสัยว่ามีวิธีง่ายๆในการทำเช่นนี้หรือไม่?


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