Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. จำนวน Connected Components ใน Undirected Graph ใน C++

    สมมติว่ามี n โหนดที่ติดป้ายกำกับจาก 0 ถึง n-1 และรายการขอบแบบไม่มีทิศทาง กำหนดฟังก์ชันเพื่อหาจำนวน connected components ใน undirected graph เช่น ถ้าอินพุทเป็น n = 5 และ edges = [[0, 1], [1, 2], [3, 4]] ผลลัพธ์จะเป็น 2 เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้ − กำหนดฟังก์ชัน dfs() รับ node, graph, อ

  2. Maximum Size Subarray Sum Equals k ใน C++

    สมมติว่ามีอาร์เรย์ชื่อ nums และค่าเป้าหมาย k เราต้องหาความยาวสูงสุดของซับอาร์เรย์ที่ผลรวมเท่ากับ k ถ้าไม่มีให้คืนค่า 0 แทน เช่น ถ้าอินพุทเป็น nums = [1, -1, 5, -2, 3], k = 3 ผลลัพธ์จะเป็น 4 เนื่องจากซับอาร์เรย์ [1, -1, 5, -2] มีผลรวม 3 และยาวที่สุด เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้ − ret := 0

  3. Largest BST Subtree ใน C++

    สมมติว่ามี binary tree เราต้องหาสับทรีที่ใหญ่ที่สุดของมัน โดยใหญ่ที่สุดหมายถึงสับทรีที่มีจำนวนโหนดมากที่สุด เช่น ถ้าอินพุทเป็นแบบ ผลลัพธ์จะเป็น 3 เนื่องจาก Largest BST Subtree ในกรณีนี้คือส่วนที่ไฮไลท์ เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้ − กำหนดโครงสร้างชื่อ Data มี 4 ค่า: size, maxVal, minVal

  4. Android Unlock Patterns ใน C++

    สมมติว่ามีหน้าจอล็อกแบบ Android 3x3 และจำนวนเต็มสองตัว m และ n ค่าของ m และ n อยู่ในช่วง 1 ≤ m ≤ n ≤ 9 เราต้องนับจำนวนรูปแบบปลดล็อกทั้งหมดของหน้าจอล็อก Android ซึ่งประกอบด้วยกุญแจขั้นต่ำ m ตัวและสูงสุด n ตัว กฎคือ แต่ละรูปแบบต้องเชื่อมกุญแจอย่างน้อย m ตัวและสูงสุด n ตัว กุญแจทั้งหมดต้องไม่ซ้ำกัน หาก

  5. โปรแกรมหา H-Index จากรายการอ้างอิงใน C++

    สมมติว่ามีอาร์เรย์ของอ้างอิงของนักวิจัย เราต้องกำหนดฟังก์ชันเพื่อคำนวณ h-index ของนักวิจัย ตามที่เรารู้ h-index เป็นเมตริกที่ใช้คำนวณผลกระทบของเอกสารของนักวิจัย อย่างเป็นทางการ H-index สามารถนิยามได้ว่า: นักวิจัยมีดัชนี h ถ้ามี h ใน N เอกสารของพวกเขาที่มีอ้างอิงอย่างน้อย h ครั้งต่อเอกสาร และเอกสารอื

  6. โปรแกรมหา Inorder Successor ของ binary search tree ใน C++

    สมมติว่ามี binary search tree BST และค่าของโหนดอีกตัว เราต้องหา in-order successor ของโหนดนั้นใน BST เราทราบกันดีว่า successor ของโหนด p คือโหนดที่มีคีย์น้อยที่สุดที่มากกว่าค่าของ p เช่น ถ้าอินพุทเป็นแบบ และ p = 1 ผลลัพธ์จะเป็น 2 เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้ − กำหนดเมธอดเรียกซ้ำ inorder

  7. โปรแกรมแปลง linked list เป็น binary search tree ใน C++

    สมมติว่ามี singly linked list ที่สมาชิกจัดเรียงในลำดับไม่ลดลง เราต้องแปลงมันเป็น height balanced binary search tree ถ้าลิสต์เป็น [-10, -3, 0, 5, 9] ต้นไม้ที่เป็นไปได้จะเป็นแบบ − เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้ − ถ้าลิสต์ว่างเปล่า แล้วคืนค่า nullกำหนดเมธอดเรียกซ้ำ sortedListToBST() รับโหนดเ

  8. การสะท้อนเส้นใน C++

    สมมติว่ามี n จุดบนระนาบ 2 มิติ เราต้องตรวจสอบว่ามีเส้นที่ขนานกับแกน y ที่สะท้อนจุดที่กำหนดอย่างสมมาตรหรือไม่ กล่าวอีกนัยหนึ่ง ตรวจสอบว่ามีเส้นที่หลังจากสะท้อนจุดทั้งหมดผ่านเส้นนั้น เซตของจุดต้นฉบับจะเหมือนกับเซตของจุดที่ถูกสะท้อน เช่น ถ้าอินพุทเป็น points = [[1,1],[-1,1]] ผลลัพธ์จะเป็น true เพื่อแก

  9. เรียงอาร์เรย์ที่แปลงแล้วใน C++

    สมมติว่ามีอาร์เรย์จำนวนเต็มที่เรียงแล้ว nums และค่าจำนวนเต็ม a, b และ c เราต้องนำฟังก์ชันควอдраติก f(x) = ax^2 + bx + c ไปใช้กับแต่ละสมาชิก x ในอาร์เรย์ และอาร์เรย์สุดท้ายต้องเรียงลำดับแล้ว เช่น ถ้าอินพุทเป็น nums = [-4,-2,2,4], a = 1, b = 3, c = 5 ผลลัพธ์จะเป็น [3,9,15,33] เพื่อแก้ปัญหานี้ เราจะทำต

  10. Bomb Enemy ใน C++

    สมมติว่ามีกริด 2 มิติ แต่ละเซลล์เป็นกำแพง W, ศัตรู E หรือว่าง 0 เราต้องหาจำนวนศัตรูสูงสุดที่สามารถฆ่าได้ด้วยระเบิดหนึ่งลูก ระเบิดจะฆ่าศัตรูทั้งหมดในแถวและคอลัมน์เดียวกันจากจุดที่วางจนกว่าจะชนกำแพง และเราสามารถวางระเบิดได้เฉพาะช่องว่างเท่านั้น เช่น ถ้าอินพุทเป็นแบบ ผลลัพธ์จะเป็น 3 เนื่องจากการวางระเ

  11. ออกแบบ Hit Counter ใน C++

    สมมติว่าเราต้องการออกแบบ hit counter ที่นับจำนวน hits ที่ได้รับใน 5 นาทีที่ผ่านมา จะมีฟังก์ชันที่รับพารามิเตอร์ timestamp ในหน่วยวินาที และเราสามารถสมมติได้ว่าการเรียกใช้ระบบทำตามลำดับเวลา (timestamp เพิ่มขึ้นอย่างต่อเนื่อง) เรายังสมมติได้ว่า timestamp เริ่มต้นที่ 1 เป็นไปได้ว่า hits หลายครั้งจะมาถึ

  12. หาใบไม้ของ Binary Tree ใน C++

    สมมติว่ามี binary tree เราจะเก็บและลบใบไม้ทั้งหมดและทำซ้ำจนกว่าต้นไม้จะว่างเปล่า เช่น ถ้าอินพุทเป็นแบบ ผลลัพธ์จะเป็น [[4,5,3],[2],[1]] เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้ − กำหนดแมป szกำหนดอาร์เรย์ 2 มิติ retกำหนดฟังก์ชัน dfs() รับ nodeถ้า node เป็น null แล้ว −sz[val ของ node] := 1 + สูงสุดของ

  13. บวกหนึ่งใน Linked List ใน C++

    สมมติว่ามีจำนวนเต็มบวกหรือศูนย์ที่แทนด้วย singly linked list ของหลักเลขที่ไม่ว่างเปล่า ตอนนี้เราต้องบวกหนึ่งให้กับจำนวนเต็มนั้น เราสามารถสมมติได้ว่าจำนวนเต็มไม่มีศูนย์นำหน้า ยกเว้นตัวเลข 0 เอง ใน linked list หลักเลขที่สำคัญที่สุดอยู่ที่หัวของลิสต์ เช่น ถ้าอินพุทเป็น [1,2,3] ผลลัพธ์จะเป็น [1,2,4] เพื

  14. การบวกช่วงใน C++

    สมมติว่ามีอาร์เรย์ขนาด n ที่ถูกเริ่มต้นด้วย 0 และเรามีค่า k เราจะทำการอัปเดต k ครั้ง แต่ละการดำเนินการจะถูกแทนด้วย triplet: [startIndex, endIndex, inc] ซึ่งเพิ่มค่า inc ให้แต่ละสมาชิกของซับอาร์เรย์ A[startIndex ... endIndex] (รวม startIndex และ endIndex) เราต้องหาอาร์เรย์ที่ปรับเปลี่ยนแล้วหลังจากดำเ

  15. ออกแบบไดเรกทอรีโทรศัพท์ใน C++

    สมมติว่าเราต้องการออกแบบไดเรกทอรีโทรศัพท์ที่รองรับการดำเนินการต่อไปนี้ − get − จะให้หมายเลขที่ยังไม่ได้มอบหมายให้ใครcheck − จะตรวจสอบว่าหมายเลขว่างหรือไม่release − จะรีไซเคิลหรือปล่อยหมายเลข ใช้ initializer เพื่อกำหนดหมายเลข n ตัวในตอนแรก เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้ − กำหนดเซต sกำหนดคิว

  16. การสร้างลำดับใหม่ใน C++

    สมมติว่าเราต้องตรวจสอบว่าลำดับต้นฉบับ org สามารถสร้างใหม่ได้อย่างเฉพาะเจาะจงจากลำดับย่อยใน seqs ลำดับต้นฉบับเป็นการเรียงสับเปลี่ยนของจำนวนเต็มจาก 1 ถึง n และ n อยู่ในช่วง 1 ≤ n ≤ 10^4 การสร้างใหม่ในที่นี้หมายถึงการทำ shortest common supersequence ของลำดับย่อยใน seqs เราต้องตรวจสอบว่ามีลำดับเดียวที่ส

  17. หาการเรียงสับเปลี่ยนใน C++

    สมมติว่ามีลายเซ็นลับที่ประกอบด้วยตัวอักษร D และ I D หมายถึงความสัมพันธ์แบบลดลงระหว่างสองตัวเลข I หมายถึงความสัมพันธ์แบบเพิ่มขึ้นระหว่างสองตัวเลข และลายเซ็นลับนี้ถูกสร้างจากอาร์เรย์จำนวนเต็มพิเศษ ซึ่งมีตัวเลขที่ไม่ซ้ำกันทั้งหมดจาก 1 ถึง n เช่น ลายเซ็นลับ DI สามารถสร้างจากอาร์เรย์แบบ [2,1,3] หรือ [3,1

  18. หาจำนวน 1 ติดกันสูงสุด II ใน C++

    สมมติว่ามีอาร์เรย์ไบนารี เราต้องหาจำนวน 1 ที่ติดกันมากที่สุดในอาร์เรย์นี้ หากเราสามารถพลิก 0 ได้สูงสุด 1 ตัว เช่น ถ้าอินพุทเป็น [1,0,1,1,0] ผลลัพธ์จะเป็น 4 เพราะถ้าพลิก 0 ตัวแรก จะได้ 1 ติดกันมากที่สุด 4 ตัว หลังจากพลิกแล้ว จำนวน 1 ติดกันสูงสุดคือ 4 เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้ − ret :=

  19. เขาวงกตใน C++

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

  20. The Maze II - หาระยะทางสั้นที่สุดในเขาวงกตใน C++

    มีลูกบอลในเขาวงกตที่มีพื้นที่ว่าง (0) และกำแพง (1) ลูกบอลเลื่อนไปในทิศทางใดทิศทางหนึ่ง (บน/ล่าง/ซ้าย/ขวา) จนกว่าจะชนกำแพงถึงจะหยุด เป้าหมายคือหาระยะทางสั้นที่สุดจากตำแหน่งเริ่มต้นไปยังจุดหมาย ระยะทาง = จำนวนช่องว่างที่ลูกบอลผ่าน (ไม่นับตำแหน่งเริ่มต้น นับตำแหน่งสุดท้าย) ตัวอย่าง Maze 5×5: 0 0 1 0

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:229/301  20-คอมพิวเตอร์/Page Goto:1 223 224 225 226 227 228 229 230 231 232 233 234 235