algorithms_and_data_structures
1.0.0
สถานะปัจจุบัน | สถิติ |
---|---|
ปัญหา C ++ ทั้งหมด | 188 |
ปัญหา Python ทั้งหมด | 15 |
สตรีครายวันปัจจุบัน | 11 |
สตรีคสุดท้าย | 06/20/2019 - 06/21/2019 |
สตรีคปัจจุบัน | 23/06/2562 - 07/03/2562 |
หมายเหตุ: โค้ดบางส่วนที่นี่เก่าและเขียนขึ้นเมื่อฉันเรียนรู้ C++ อาจเป็นไปได้ว่าโค้ดไม่ปลอดภัยหรือตั้งสมมติฐานผิด โปรดใช้ด้วยความระมัดระวัง ยินดีต้อนรับคำขอดึงเสมอ
ปัญหา | สารละลาย |
---|---|
ค้นหาโหนดที่ n ของลิงค์ลิสต์จากสุดท้าย | nthToLastNode.cpp, nth_to_last_node.py |
เพิ่มตัวเลขโดยที่แต่ละหลักของตัวเลขจะแสดงด้วยโหนดของรายการที่เชื่อมโยง ให้ผลลัพธ์เป็นรายการที่เชื่อมโยง | add_two_numbers_lists.cpp, add_two_numbers_list.py |
สลับโหนดของ Linkedlist โดยไม่ต้องสลับข้อมูล | swapNodesWithoutSwappingData.cpp, swap_nodes_without_swapping_data.py |
ย้อนกลับรายการที่เชื่อมโยง วนซ้ำและวนซ้ำ | ReverseLinkedListIterAndRecurse.cpp, Reverse_linkedlist.py |
เมื่อได้รับรายการที่เชื่อมโยง ให้ย้อนกลับโหนดอื่นและต่อท้าย | ย้อนกลับAlternateNodes.cpp |
ให้เฉพาะตัวชี้โหนดเท่านั้น ให้ลบโหนดออกจากรายการที่เชื่อมโยง | ลบNode.cpp |
ลบลิงค์ลิสต์ทั้งหมด | ลบLinkedlist.cpp |
พิมพ์โหนดกลางของ Linkedlist โดยไม่ต้องวนซ้ำสองครั้ง | printMiddleNode.cpp |
ตรวจสอบว่ารายการที่เชื่อมโยงเป็น Pallindrome หรือไม่ | listPallindrome.cpp |
แทรกข้อมูลในรายการลิงก์ที่เรียงลำดับ | insertInASortedLinkedList.cpp |
กำหนดจุดตัด (รวม) ของสองรายการที่เชื่อมโยงที่กำหนด | findIntersectionPointOfLists.cpp, intersection_of_lists.py |
โคลนรายการที่เชื่อมโยงซึ่งมีตัวชี้ถัดไปและตัวชี้แบบสุ่ม Space Complexity - O(1) | cloneListWithRandomPtr.cpp, clone_list_with_random_ptr.py |
เมื่อพิจารณารายการลิงก์ที่เรียงลำดับแล้วซึ่งมีรายการซ้ำ ให้ลบรายการที่ซ้ำกันออกในการวนซ้ำครั้งเดียว | RemoveDuplicatesFromSortedList.cpp |
ใช้อัลกอริธึมการค้นหาวัฏจักรของ Floyd เพื่อตรวจสอบว่า Linkedlist มีวงจรหรือไม่ หากมีวงจร ให้ลบลูปออก | floyedCycleDetection.cpp |
เรียงลำดับรายการที่เชื่อมโยงโดยใช้การเรียงลำดับแบบผสาน | merge_sort.cpp |
รับรายการเชื่อมโยงเดี่ยว L 0 -> L 1 -> … -> L n-1 -> L n จัดเรียงโหนดในรายการ (เข้าที่) ใหม่เพื่อให้รายการที่สร้างใหม่คือ: L 0 -> L n -> L 1 -> L n-1 -> L 2 -> L n-2 .... | จัดเรียงใหม่_รายการ.cpp |
รวมมีการนำโครงสร้างข้อมูลไปใช้ส่วนหัวเดียวและอัลกอริธึมบางอย่าง
โครงสร้างข้อมูล/อัลกอริธึม | การนำไปปฏิบัติ |
---|---|
มาโครและอัลกอริทึมทั่วไป เช่น การสลับ การสร้างตัวเลขสุ่ม | ทั่วไป.h |
การใช้งานสแต็กทั่วไป | สแต็ค.เอช |
การใช้งานคิวทั่วไป | คิว.h |
การใช้งานรายการทั่วไป | รายการ.h |
การใช้งานแผนผังการค้นหาแบบไบนารี | binarySearchTree.h |
การดำเนินการเรียงลำดับอย่างรวดเร็ว | QuickSort.h |
ผสานการใช้งานการเรียงลำดับ | mergeSort.h |
การดำเนินการเรียงลำดับการเลือก | SelectionSort.h |
การใช้งานการเรียงลำดับแบบบับเบิ้ล | bubbleSort.h |
การใช้งาน Linux Kernel Double LinkedList | double_linked_list.h |
การใช้งานกราฟทั่วไป (รายการที่อยู่ติดกัน) | กราฟ.ชม |
การใช้งานการเรียงลำดับฮีป | heap_sort.h |
การใช้งานไลบรารีสตริงของฉันเอง | pstring.h pstring.cpp |
ปัญหา | สารละลาย |
---|---|
ตรวจสอบว่าตัวเลขเป็นกำลังของ 2 หรือไม่ | power_of_2.cpp |
เพิ่มเลขฐานสองสองตัวที่แสดงเป็นสตริง | addBin.cpp |
กำหนดกำลังถัดไปของ 2 สำหรับจำนวนที่กำหนด | next_power_of_2.cpp |
การใช้การจัดการบิตจะพิจารณาว่าตัวเลขเป็นผลคูณของ 3 หรือไม่ | multiple_of_3.cpp |
กำหนด endianess ของเครื่อง พิมพ์ตัวเลขกลับด้าน Endianess | ReverseEndianness.cpp |
ค้นหาความเท่าเทียมกันของจำนวนที่กำหนด | find_parity.cpp |
ใช้การคูณตัวเลขอย่างรวดเร็วเป็น 7 โดยใช้การจัดการบิต | คูณ_by_7.cpp |
การย้อนกลับบิตของจำนวนเต็มที่ไม่ได้ลงนาม (สองวิธี - การย้อนกลับทีละบิต & หารและพิชิต) | ReverseBitsOfAnInteger.cpp |
ฟังก์ชันขนาดเล็กเพื่อกำหนดตำแหน่งของบิตที่เหมาะสมที่สุดในจำนวนเต็มที่กำหนด | right_most_set_bit.cpp |
เมื่อพิจารณาเวกเตอร์ของตัวเลขแล้ว จะมีตัวเลขเพียงตัวเดียวเท่านั้นที่เกิดเป็นจำนวนคี่ จงหาตัวเลขนั้น | find_odd_one_out.cpp |
เมื่อระบุจำนวนเต็มสองตัว ให้พิจารณาว่าผลรวมของจำนวนนั้นจะเป็นค่าล้นระหว่างกันหรือไม่ | จำนวนเต็มOverflow.cpp |
ต้องใช้การดำเนินการพลิกจำนวนบิตในการแปลงตัวเลข A เป็น B | countNumberOfBitFlips.cpp |
เมื่อกำหนดตัวเลข x และตำแหน่งสองตำแหน่ง (จากด้านขวา) ในการแทนค่า x แบบไบนารี ให้เขียนฟังก์ชันที่สลับ n บิตทางขวาที่ตำแหน่งที่กำหนดสองตำแหน่ง แล้วส่งคืนผลลัพธ์ นอกจากนี้ยังกำหนดว่าบิตทั้งสองชุดไม่ทับซ้อนกัน | swapSetOfBits.cpp |
บวกตัวเลขสองตัวโดยไม่ต้องใช้ตัวดำเนินการทางคณิตศาสตร์ใดๆ | นอกจากนี้_ไม่มี_ตัวดำเนินการ.cpp |
หลุยส์และริชาร์ดเล่นเกมกัน พวกเขาตั้งตัวนับไว้ที่ N. Louise ได้เทิร์นแรกและผลัดกันหลังจากนั้น ในเกม พวกเขาดำเนินการดังต่อไปนี้:
| counter_game.cpp |
ตรวจสอบว่าจำนวนเต็มสองตัวมีเครื่องหมายตรงข้ามกันหรือไม่ | check_opposite_signs.cpp |
สลับสองบิตที่ตำแหน่ง p และ q ของจำนวนเต็มที่กำหนด | swapBits.cpp |
ตรวจสอบว่าตัวเลขเป็นเลขยกกำลัง 4 หรือไม่ | check_if_power_of_4.cpp |
ปัญหา | สารละลาย |
---|---|
ปัญหา 1-1 : ฉบับที่ 6: เขียนอัลกอริทึมเพื่อตรวจสอบว่าสตริงมีอักขระเฉพาะหรือไม่ เราสามารถทำได้โดยไม่ต้องใช้โครงสร้างข้อมูลเพิ่มเติมหรือไม่? | 1-1-hasUniqueChars.cpp, 1-1-hasUniqueChars.py |
ปัญหา 1-2: ฉบับที่ 5: ย้อนกลับสตริงเมื่อคุณผ่านสตริง C ที่สิ้นสุดด้วยค่า null | 1-2-edi5-reverseString.cpp |
ปัญหา 1-2 : ฉบับที่ 6: ให้สองสตริง พิจารณาว่าสตริงหนึ่งเป็นการเรียงสับเปลี่ยนของสตริงอื่นหรือไม่ | 1-2-perm-strings.cpp, 1-2-perm-strings.py |
ปัญหา 1-3 : ฉบับที่ 5: เขียนอัลกอริทึมเพื่อลบตัวอักษรที่ซ้ำกันออกจากสตริง | 1-3-edi5-removeDuplicates.cpp |
ปัญหา 1-3 : ฉบับที่ 6: URLify: แทนที่ช่องว่างทั้งหมดในสตริงด้วย '%20' ควรแทนที่ | 1-3-URLify.cpp |
ปัญหา 1-4 : ฉบับที่ 6: กำหนดสตริง ให้เขียนฟังก์ชันเพื่อตรวจสอบว่าเป็นการเรียงสับเปลี่ยนของพัลลินโดรมหรือไม่ | 1-4-pallindrome-พีชคณิต.cpp |
ปัญหา 1-5 : ฉบับที่ 6: มีการแก้ไขที่เป็นไปได้สามแบบที่สามารถทำได้กับสตริง - ใส่อักขระ, ลบอักขระ, แทนที่อักขระ กำหนดสองสตริง ให้พิจารณาว่าเป็นหนึ่งหรือ 0 แก้ไข | 1-5-one-edit-away.cpp |
ปัญหาที่ 1-6: ใช้วิธีการดำเนินการบีบอัดสตริงพื้นฐาน ตัวอย่างสตริง aabccccaaa ควรถูกบีบอัดเป็น a2b1c5a3 อย่างไรก็ตาม หากสตริงที่ถูกบีบอัดมีขนาดใหญ่กว่าสตริงดั้งเดิม ให้ส่งคืนสตริงดั้งเดิม | 1-6-string-compression.cpp |
ปัญหา 1-7: หมุนเมทริกซ์ตามเข็มนาฬิกา (& ทวนเข็มนาฬิกา) 90 องศา | 1-7-matrix-rotation.cpp |
ปัญหาที่ 1-8: เขียนอัลกอริทึมว่าถ้าองค์ประกอบของเมทริกซ์ MxN เป็น 0 แถวและคอลัมน์ทั้งหมดจะถูกตั้งค่าเป็น 0 | 1-8-ศูนย์-matrix.cpp |
ปัญหาที่ 1-9: เมื่อกำหนดให้สองสตริง s1 และ s2 ให้พิจารณาว่า s2 คือการหมุนของ s1 โดยใช้การเรียกฟังก์ชันเพียงครั้งเดียวซึ่งจะตรวจสอบว่าสตริงหนึ่งหมุนของอีกสตริงหนึ่งหรือไม่ | 1-9-string-rotation.cpp |
ปัญหาที่ 2-1: ลบรายการที่ซ้ำกันออกจากรายการลิงก์ ที่ไม่ได้เรียงลำดับ จะเกิดอะไรขึ้นถ้าไม่อนุญาตให้มีบัฟเฟอร์ชั่วคราว | 2-1-remove-dups.cpp |
ปัญหาที่ 2-2: กำหนดโหนด ที่ k จากรายการสุดท้ายของรายการที่เชื่อมโยงเดี่ยวๆ (แนวทางการวนซ้ำและแบบเรียกซ้ำ) | 2-2-kthToLast.cpp |
ปัญหาที่ 2-3: ใช้อัลกอริทึมเพื่อลบโหนดที่อยู่ตรงกลางของรายการที่เชื่อมโยงเดี่ยวๆ | 2-3-delete-middle-node.cpp |
ปัญหาที่ 2-4: แบ่งพาร์ติชั่นลิงค์ลิสต์รอบๆ ค่า x โดยโหนดทั้งหมดที่เล็กกว่า x มาก่อนโหนดทั้งหมดที่มากกว่าเท่ากับ x | 2-4-partition.cpp |
ปัญหาที่ 2-5: คุณมีตัวเลขสองตัวที่แสดงโดยรายการเชื่อมโยงโดยที่แต่ละโหนดมีตัวเลขหลักเดียว ตัวเลขจะถูกจัดเก็บในลำดับที่กลับกัน โดยที่ตัวเลข 1 อยู่ที่ส่วนหัวของรายการ เขียนฟังก์ชันที่บวกตัวเลขสองตัวและส่งกลับผลรวมเป็นรายการที่เชื่อมโยง ตัวอย่าง:
| 2-5-เพิ่ม-lists.cpp |
ปัญหาที่ 2-6: ตรวจสอบว่ารายการที่เชื่อมโยงเป็นพาลินโดรม (2 ซ้ำและหนึ่งวิธีเรียกซ้ำ | 2-6-พาลินโดรม.cpp |
ปัญหาที่ 2-7: ตรวจสอบว่ารายการเชื่อมโยงสองรายการที่ตัดกัน ถ้าใช่ ให้ส่งกลับโหนดที่ตัดกัน จุดตัดถูกกำหนดตามการอ้างอิงไม่ใช่ค่า | 2-7-intersection.cpp |
ปัญหาที่ 2-8: ตรวจสอบว่ารายการที่เชื่อมโยงมีการวนซ้ำหรือไม่ ค้นหาโหนดเริ่มต้นของลูปและลบการวนซ้ำ | 2-8-loop-detection.cpp |
ปัญหา | สารละลาย |
---|---|
คำศัพท์ Fibonacci ลำดับที่ N โดยใช้เทคนิคการจดจำที่แตกต่างกัน | fibonacci.cpp |
ปัญหาลำดับต่อมาที่พบบ่อยที่สุด | lcs.cpp, longest_common_subsequence.py |
วิกิปัญหาลำดับต่อมาที่ต่อเนื่องกันของค่าสูงสุด | max_subsequence.cpp |
หมายเลขคาตาลัน - นับจำนวนแผนผังการค้นหาแบบไบนารีที่เป็นไปได้ด้วยปุ่ม n | catalan_number.cpp |
คำนวณจำนวนเส้นทางที่ไม่ซ้ำกันจากต้นทาง (0, 0) ไปยังปลายทาง (m-1, n-1) ในตาราง amxn คุณสามารถเคลื่อนที่ไปในทิศทางลงหรือขวาเท่านั้น | Unique_paths.cpp |
0-1 ปัญหากระเป๋าเป้สะพายหลัง: ลองนึกภาพคุณเป็นขโมยและคุณต้องการขโมยของที่มีของเต็มห้อง คุณมีกระเป๋าเป้สะพายหลังที่สามารถรองรับน้ำหนักได้สูงสุด W และคุณต้องการเติมให้เต็มเพื่อให้คุ้มค่าที่สุด ในฐานะหัวขโมยที่ฉลาด คุณจึงรู้น้ำหนักและมูลค่าของสิ่งของแต่ละชิ้นในห้อง คุณจะเติมกระเป๋าเป้สะพายหลังของคุณอย่างไร เพื่อให้คุณได้รับมูลค่าสูงสุดที่เป็นไปได้ โดยคุณสามารถเติมได้ไม่เกินความจุ W เท่านั้น | 0_1_knapsack_problem.cpp |
ปัญหา | สารละลาย |
---|---|
การข้ามลำดับระดับซ้ำของ Tree โดยใช้คิว | ระดับOrderTraversalIterative.cpp, ระดับ_order_tree_traversal_iterative.py |
การข้ามลำดับระดับแบบเรียกซ้ำของ Tree | ระดับOrderTraversalRecursive.cpp, ระดับ_order_tree_traversal_recursive.py |
ZigZag Traversal ของต้นไม้ | zigZagTraversal.cpp, zig_zag_traversal.py |
บรรพบุรุษและผู้สืบทอดของโหนดที่กำหนดในแผนผังการค้นหาแบบไบนารี | รุ่นก่อนSuccessor.cpp |
เมื่อกำหนดค่าของสองโหนดในแผนผังการค้นหาแบบไบนารี ให้ค้นหาบรรพบุรุษร่วมที่ต่ำที่สุด (LCA) สมมติว่าทั้งสองค่ามีอยู่ในแผนภูมิ | ต่ำสุดทั่วไป-ancestor.cpp, low_common_ancestor.py |
กำหนดต้นไม้ไบนารี่ (ไม่เหมือนกับต้นไม้ค้นหาแบบไบนารี) ให้ค้นหาบรรพบุรุษร่วมที่ต่ำที่สุด (LCA) | สามัญต่ำสุดบรรพบุรุษ-binary-tree.cpp |
เมื่อกำหนดต้นไม้ไบนารี ให้พิมพ์เส้นทางจากรากสู่ใบไม้ทั้งหมดหนึ่งเส้นทางต่อบรรทัด | printAllRootToLeafPath.cpp |
ตรวจสอบว่าต้นไม้เป็นต้นไม้รวมหรือไม่ SumTree คือ Binary Tree โดยที่ค่าของโหนดจะเท่ากับผลรวมของโหนดที่มีอยู่ในแผนผังย่อยด้านซ้ายและแผนผังย่อยด้านขวา ต้นไม้ว่างคือ SumTree และผลรวมของต้นไม้ว่างถือได้ว่าเป็น 0 โหนดใบก็ถือเป็น SumTree เช่นกัน | sumTree.cpp |
แปลงแผนผังเป็น sumTree โดยแต่ละโหนดจะมีผลรวมของแผนผังย่อยซ้ายและขวาของแผนผังดั้งเดิม | Convert_to_sum_tree.cpp, Convert_to_sum_tree.py |
แปลงอาร์เรย์ที่เรียงลำดับเป็นแผนผังการค้นหาแบบไบนารีที่สมดุล | sortedArrayToBST.cpp |
เมื่อกำหนดต้นไม้ไบนารี ให้สร้างผลรวมของแต่ละคอลัมน์แนวตั้ง | แนวตั้งSum.cpp |
เมื่อพิจารณาจากแผนผังไบนารีและคีย์ โหนดที่มีคีย์จึงมีอยู่ในแผนผัง ค้นหาบรรพบุรุษทั้งหมดของโหนดด้วยคีย์ บรรพบุรุษที่นี่คือโหนดที่อยู่ในเส้นทางตรงจากโหนดหนึ่งไปอีกโหนดหนึ่ง | node_ancestors_in_root_path.cpp |
กำหนดต้นไม้ไบนารีและคีย์ ให้ส่งคืนระดับของโหนดด้วยคีย์ รูทอยู่ที่ระดับ 1 และหากไม่มีโหนดที่มีคีย์อยู่ในแผนผัง ให้คืนค่า 0 | ระดับ_of_node.cpp |
เมื่อพิจารณาจากต้นไม้ไบนารี ให้ค้นหาเส้นทางทั้งหมดตั้งแต่รากถึงโหนด ซึ่งผลรวมคือ k | k_sum_paths.cpp |
เมื่อกำหนดแผนผังไบนารี ให้พิมพ์โหนดทีละระดับในลำดับย้อนกลับ เช่นโหนดทั้งหมดที่อยู่ในระดับสุดท้ายควรพิมพ์ก่อน ตามด้วยโหนดระดับที่สองสุดท้ายและอื่นๆ โหนดทั้งหมดในระดับใดๆ ควรพิมพ์จากซ้ายไปขวา | ReverseLevelOrderTraversal.cpp |
สลับต้นไม้ไบนารี ซ้ำและวนซ้ำ | invert_a_tree.cpp |
จากแผนผังการค้นหาแบบไบนารี ให้ค้นหาเพดานและพื้นของคีย์ที่ระบุในนั้น หากคีย์ที่กำหนดอยู่ใน BST ทั้งพื้นและเพดานจะเท่ากับคีย์นั้น มิฉะนั้น ceil จะเท่ากับคีย์ที่สูงกว่าถัดไป (ถ้ามี) ใน BST และพื้นจะเท่ากับคีย์ที่ใหญ่กว่าก่อนหน้า (ถ้ามี) ใน BST | floor_ceil_bst.cpp |
ค้นหาองค์ประกอบที่เล็กที่สุดอันดับที่ k ในแผนผังการค้นหาแบบไบนารี | kth_smallest.cpp |
ตรวจสอบว่าไบนารีทรีที่กำหนดเป็นแผนผังการค้นหาแบบไบนารีหรือไม่ | validate_bst.cpp |
เมื่อกำหนดแผนผังการค้นหาแบบไบนารีและหมายเลขเป้าหมาย ให้คืนค่าเป็นจริงหากมีองค์ประกอบสองรายการใน BST ซึ่งผลรวมขององค์ประกอบเหล่านั้นเท่ากับเป้าหมายที่กำหนด | find_target_k.cpp |
เมื่อกำหนดแผนผังการค้นหาแบบไบนารีที่ไม่ว่างเปล่าและค่าเป้าหมาย ให้ค้นหาค่าใน BST ที่ใกล้กับเป้าหมายมากที่สุด นอกจากนี้ โปรดทราบว่าค่าเป้าหมายเป็นจุดลอยตัว จะมีเพียงค่าเดียวที่ไม่ซ้ำซึ่งใกล้กับเป้าหมายมากที่สุด | ใกล้เคียงที่สุด_bst_value.cpp, ใกล้เคียงที่สุด_bst_value.py |
กำหนดต้นไม้ไบนารี โดยผ่านการสั่งซื้อล่วงหน้า สร้างเอาต์พุตสตริงที่มีค่าโหนดและวงเล็บ โหนดว่างจะต้องแสดงด้วยคู่วงเล็บว่าง "()" และคุณต้องละเว้นคู่วงเล็บว่างทั้งหมดที่ไม่ส่งผลต่อความสัมพันธ์การแมปแบบหนึ่งต่อหนึ่งระหว่างสตริงและแผนผังไบนารีดั้งเดิม ตัวอย่างในไฟล์โค้ด | string_from_tree.cpp |
ปัญหา | สารละลาย |
---|---|
การใช้อัลกอริทึม Robin-Karp สำหรับการค้นหาสตริง | robinKarpStringMatching.cpp |
ค้นหาการเรียงสับเปลี่ยนถัดไปของสตริงที่กำหนด เช่น จัดเรียงสตริงที่กำหนดใหม่ในลักษณะที่เป็นสตริงที่มีขนาดใหญ่กว่าสตริงที่กำหนดถัดไป | next_permutation.cpp |
การใช้อัลกอริทึม Z สำหรับการจับคู่รูปแบบ | ซี.ซีพีพี |
กรณีทดสอบสำหรับไลบรารีสตริงที่สร้างขึ้นเอง | pstring_test.cpp |
รับความยาวของคำสุดท้ายในสตริง | length_of_last_word.cpp |
ค้นหาความแตกต่างระหว่างสองสตริง สตริง t ถูกสร้างขึ้นโดยการสุ่มสตริง s จากนั้นเพิ่มตัวอักษรอีกหนึ่งตัวในตำแหน่งสุ่ม กำหนดอักขระที่แตกต่างกันใน t | find_difference.cpp |
ปัญหา | สารละลาย |
---|---|
พิมพ์เนื้อหาของเมทริกซ์ตามลำดับเกลียว | matrix_spiral_print.cpp |
เมื่อกำหนดเมทริกซ์ M x N ให้หมุนโดยการหมุน R ทวนเข็มนาฬิกา และแสดงเมทริกซ์ผลลัพธ์ | Rot_matrix.cpp |
หมุนอาร์เรย์ด้วยองค์ประกอบ r (ซ้ายหรือขวา) | array_rotation.cpp |
เมื่อกำหนดอาร์เรย์ของค่า intergeres ซ้ำ/ไม่ซ้ำ ให้กำหนด int ที่ไม่ซ้ำตัวแรกในอาร์เรย์นี้ | first_non_repeating_int.cpp |
ใน Quantumland มี n เมืองที่มีหมายเลขตั้งแต่ 1 ถึง n ในที่นี้ c ฉัน หมายถึงเมือง ที่ i มีถนน n−1 สายในควอนตัมแลนด์ ที่นี่ c i และ c i+1 มีถนนสองทิศทางระหว่างพวกเขาสำหรับแต่ละ i < n มีข่าวลือว่า Flatland กำลังจะโจมตี Quantumland และราชินีต้องการรักษาดินแดนของเธอให้ปลอดภัย ถนนระหว่าง c i และ c i+1 จะปลอดภัยหากมียามอยู่ใน c i หรือ c i+1 ราชินีได้ทรงวางยามไว้สองสามคนในบางเมืองแล้ว แต่เธอไม่แน่ใจว่าพวกเขาจะเพียงพอที่จะรักษาถนนให้ปลอดภัยหรือไม่ เธอต้องการทราบจำนวนขั้นต่ำของยามใหม่ที่เธอต้องจ้าง ดูความคิดเห็นในโซลูชันสำหรับรายละเอียดอินพุต/เอาต์พุต | save_quantamland.cpp |
คุณจะได้จำนวนเต็ม N ค้นหาตัวเลขในจำนวนนี้ที่หาร N ได้อย่างแม่นยำ (ส่วนที่เหลือ 0 ไว้เป็นเศษ) แล้วแสดงจำนวนของมัน สำหรับ N=24 จะมีตัวเลข 2 หลัก (2 และ 4) ตัวเลขทั้งสองหาร 24 ลงตัวพอดี คำตอบของเราคือ 2 ดูรายละเอียดเพิ่มเติมในความคิดเห็นส่วนหัวของไฟล์คำตอบ | findDigits.cpp |
เข้ารหัสแล้วถอดรหัสข้อความโดยใช้ Caeser Cipher | caeser_cipher.cpp |
เข้ารหัสแล้วถอดรหัสข้อความโดยใช้การเข้ารหัสVigenère | vigenere_cipher.cpp |
สร้างเลขฐานสองระหว่าง 1 ถึง N อย่างมีประสิทธิภาพ | n_binary.cpp |
ใช้ฟังก์ชันพลังงาน | power_function.cpp |
ปัญหา | สารละลาย |
---|---|
พิมพ์การเรียงสับเปลี่ยนทั้งหมดของสตริง ตัวอย่าง: การเรียงสับเปลี่ยนของ ABC ได้แก่ ABC, ACB, BCA, BAC, CAB, CBA | string_permutations.cpp |
อัลกอริทึมแบบยุคลิดเพื่อค้นหาตัวหารร่วมมากของตัวเลขสองตัว (วนซ้ำและเรียกซ้ำ) | gcd.cpp |
ใช้ pow(x,y) โดยใช้วิธีแบ่งและพิชิต ลองนำไปใช้ใน O (logn) | pow.cpp |
คำนวณแฟกทอเรียลของจำนวนมาก เช่น 100 (จะมี 158 หลัก) | factorial_of_large_num.cpp |
สร้างคำที่เป็นไปได้ทั้งหมดจากตัวเลขที่ป้อนบนปุ่มกดมือถือแบบเดิม | phone_digits.cpp |
เมื่อกำหนดการแสดงสตริงของตัวเลข ให้ลบอักขระ n ตัวออกจากสตริง เพื่อให้การแสดงตัวเลขมีค่าน้อยที่สุด | low_possible_number.cpp |
ตรวจสอบว่าตัวเลขเป็นตัวเลขที่มีความสุขหรือไม่ ตัวเลขคือจำนวนสุขถ้าลำดับการดำเนินการโดยที่ตัวเลขถูกแทนที่ด้วยผลรวมของกำลังสองของหลักจนกลายเป็น 1 ตัวเลขจะไม่ใช่จำนวนสุขหากเราอยู่ในวงวนไม่สิ้นสุดเมื่อดำเนินการข้างต้น | happy_number.cpp |
ปัญหา | สารละลาย |
---|---|
เรามีชุดราคารายวันสำหรับหุ้น เราจำเป็นต้องคำนวณ span ของราคาหุ้นทั้งหมด n วัน Span for ith day คือจำนวนวันสูงสุดติดต่อกัน ซึ่งราคาหุ้นน้อยกว่าหรือเท่ากับวันที่ 8 สำหรับราคาหุ้น {100, 60, 70, 65, 80, 85} ช่วงจะเป็น {1, 1, 2, 1, 4, 5} Span สำหรับวันที่ 1 จะเป็น 1 เสมอ ตอนนี้สำหรับวันที่ 2 หุ้นอยู่ที่ 60 และไม่มีวันไหนที่หุ้นจะต่ำกว่า 60 ดังนั้น Span ยังคงอยู่ที่ 1 สำหรับวันที่ 3 ราคาหุ้นอยู่ที่ 70 ดังนั้น Span ของมัน คือ 2 จากวันก่อนหน้าคือ 60 และต่อๆ ไป | stock_span_problem.cpp |
เมื่อกำหนดนิพจน์ infix ให้แปลงเป็นนิพจน์ postfix ตัวอย่าง (A+B)*C --> AB+C* | infix_to_postfix.cpp |
เมื่อกำหนดสตริงที่มีเพียงอักขระ '(', ')', '{', '}', '[' และ ']' ให้พิจารณาว่าสตริงอินพุตนั้นถูกต้องหรือไม่ วงเล็บต้องปิดในลำดับที่ถูกต้อง "( )" และ "()[]{}" ใช้ได้ทั้งหมด แต่ "(]" และ '([)]" ใช้ไม่ได้ | valid_parenthesis.cpp |
ปัญหา | สารละลาย |
---|---|
เมื่อกำหนดเวกเตอร์ที่เรียงลำดับแล้ว ให้ส่งคืนดัชนีแรกของการเกิดขึ้นของค่าในเวกเตอร์ หากไม่มีตัวเลข ให้ส่งคืน -1 | first_occurrence_binary_search.cpp |
ค้นหาองค์ประกอบที่ซ้ำกันตัวแรกในอาร์เรย์ของจำนวนเต็ม เมื่อระบุอาร์เรย์ของจำนวนเต็ม ให้ค้นหาองค์ประกอบที่ซ้ำกันตัวแรกในนั้น เราจำเป็นต้องค้นหาองค์ประกอบที่เกิดขึ้นมากกว่าหนึ่งครั้งและมีดัชนีการเกิดขึ้นครั้งแรกน้อยที่สุด | firstRepeatingElement.cpp |
เมื่อพิจารณารายการจำนวนเต็มที่ไม่ได้เรียงลำดับ A={a 1 ,a 2 ,…,a N } จงหาคู่ขององค์ประกอบที่มีค่าความแตกต่างสัมบูรณ์น้อยที่สุดระหว่างกันใช่หรือไม่ หากมีหลายคู่ให้ค้นหาทั้งหมด | nears_numbers.cpp |
เมื่อกำหนดอาร์เรย์ที่เรียงลำดับ ให้กำหนดดัชนีของจุดคงที่ในอาร์เรย์นี้ ถ้าอาร์เรย์ไม่มีจุดคงที่ ให้คืนค่า -1 อาร์เรย์มีจุดคงที่เมื่อดัชนีขององค์ประกอบเหมือนกับดัชนี เช่น i == arr[i] ความซับซ้อนของเวลาที่คาดหวัง O(logn) | คงที่Point.cpp |
ค้นหาองค์ประกอบสูงสุดในอาร์เรย์ซึ่งเพิ่มขึ้นก่อนแล้วจึงลดลง อินพุต: arr[] = {8, 10, 20, 80, 100, 200, 400, 500, 3, 2, 1}, เอาต์พุต : 500 อาร์เรย์อาจเพิ่มขึ้นหรือลดลงอย่างเคร่งครัดเช่นกัน ความซับซ้อนของ ExpectedTime คือ O(logn) | findMaximum.cpp |
เมื่อพิจารณาอาร์เรย์ของจำนวนเต็มบวกและ/หรือลบ ให้ค้นหาคู่ในอาร์เรย์ที่ผลรวมใกล้เคียง 0 มากที่สุด | findClosestPairToZero.cpp |
Numeros ศิลปินมีรายชื่อ A และ B สองรายการ โดยที่ B เป็นการเรียงสับเปลี่ยนของ A Numeros รู้สึกภูมิใจกับรายชื่อเหล่านี้มาก น่าเสียดายที่ในขณะที่ขนส่งพวกเขาจากนิทรรศการหนึ่งไปยังอีกนิทรรศการหนึ่ง มีตัวเลขบางส่วนหลุดออกจาก A คุณสามารถหาตัวเลขที่หายไปได้หรือไม่? หมายเหตุ:
| MissingNumbers.cpp |
ค้นหาคู่ที่ใกล้เคียงที่สุดจากอาร์เรย์ที่เรียงลำดับสองชุด เมื่อพิจารณาอาร์เรย์ที่เรียงลำดับสองตัวและตัวเลข x ให้ค้นหาคู่ที่ผลรวมใกล้เคียงที่สุดกับ x และคู่นั้นมีองค์ประกอบจากแต่ละอาร์เรย์ เราได้รับอาร์เรย์สองตัว ar1[0…m-1] และ ar2[0..n-1] และตัวเลข x เราจำเป็นต้องค้นหาคู่ ar1[i] + ar2[j] เพื่อให้ค่าสัมบูรณ์ของ (ar1 [i] + ar2[j] – x) เป็นค่าต่ำสุด | NearPairSorted.cpp |
เมื่อพิจารณาอาร์เรย์ A ขององค์ประกอบ n ตัว ให้ค้นหาดัชนีสามตัว i, j และ k โดยที่ A[i]^2 + A[j]^2 = A[K]^2 ความซับซ้อนของเวลา O(n2) และความซับซ้อนของอวกาศ O(1) | squareSum.cpp |
เมื่อพิจารณาอาร์เรย์ arr[0..n-1] ที่ไม่ได้เรียงลำดับซึ่งมีขนาด n ให้ค้นหาอาร์เรย์ย่อยที่มีความยาวขั้นต่ำ arr[s..e] เพื่อให้การเรียงลำดับอาร์เรย์ย่อยนี้ทำให้อาร์เรย์ทั้งหมดถูกจัดเรียง | minLengthUnsortedArray.cpp |
ค้นหาตัวเลขที่หายไปในการก้าวหน้าทางคณิตศาสตร์ | MissingNumber2.cpp |
ค้นหาองค์ประกอบร่วมในเวกเตอร์ที่เรียงลำดับ 3 ตัว | commonIn3Arrays.cpp |
ค้นหาคู่ทั้งหมดที่มีผลรวมที่กำหนดในอาร์เรย์/เวกเตอร์ที่ไม่เรียงลำดับ | find_pairs_with_sum.cpp |
เมื่อกำหนดอาร์เรย์ ให้ค้นหาองค์ประกอบจุดสูงสุดในนั้น องค์ประกอบพีคคือองค์ประกอบที่ใหญ่กว่าเพื่อนบ้าน | Peak_element.cpp |
เมื่อพิจารณาอาร์เรย์ที่เรียงลำดับของจำนวนเต็มที่ไม่เป็นลบ ให้ค้นหาองค์ประกอบที่ขาดหายไปน้อยที่สุด | ขนาดเล็กที่สุด_missing.cpp |
ย้ายศูนย์ทั้งหมดในเวกเตอร์ไปที่จุดสิ้นสุด | move_zeros.cpp |
ปัญหา | สารละลาย |
---|---|
ความลึกการเคลื่อนที่ครั้งแรกของกราฟ | dfsDemo.cpp |
ความกว้างการเคลื่อนที่ครั้งแรกของกราฟ | bfsDemo.cpp |
คำนวณระยะทางที่สั้นที่สุดจากตำแหน่งเริ่มต้น (โหนด S) ไปยังโหนดอื่นๆ ทั้งหมดในกราฟโดยใช้อัลกอริทึม Dijkstra | dijkstra-shortest-reach.cpp |
คำนวณน้ำหนักรวมของ Spanning Tree ขั้นต่ำของกราฟที่กำหนด (ผลรวมของน้ำหนักของขอบซึ่งก่อตัวเป็น MST) โดยใช้อัลกอริทึมของ Prim | primsMST.cpp |
พิมพ์แผนผังการขยายขั้นต่ำ (MST) ของกราฟที่กำหนดโดยใช้อัลกอริทึมของ Kruskal | ครูสคาลMST.cpp |
สร้างโปรแกรมเพื่อสร้างการเข้ารหัส Huffman สำหรับอักขระแต่ละตัวเป็นตาราง | huffman_encoding.cpp |
ค้นหาคำที่กำหนดในกระดาน 2D ที่มีตัวอักษร คำนี้สามารถสร้างได้โดยการเคลื่อนที่ไปตามเซลล์แนวนอนหรือแนวตั้งที่อยู่ติดกันตามลำดับ ในลำดับการสร้างคำ ตัวอักษรในตำแหน่งเดียวกันไม่สามารถใช้ได้มากกว่าหนึ่งครั้ง (ตรวจสอบด้านบนของไฟล์เพื่อดูตัวอย่าง) | grid_word_search.cpp |
ด้วยหน้าจอ 2D ตำแหน่งของพิกเซลและค่าใหม่ของสีที่จะเติม แทนที่สีของพิกเซลและพิกเซลสีเดียวกันที่อยู่ติดกันทั้งหมด (บน ล่าง ซ้าย ขวา) ด้วยสีใหม่ สิ่งนี้เหมือนกับการเติมน้ำท่วม (จำสัญลักษณ์ถัง) ขอบเขตใน MS-PAINT | Flood_fill.cpp |
ปัญหา | สารละลาย |
---|---|
กำหนดอาร์เรย์จำนวนเต็มสองตัว A และ B โดยแต่ละอาร์เรย์มีจำนวนเต็ม N คุณมีอิสระที่จะเปลี่ยนลำดับขององค์ประกอบในอาร์เรย์ มีการเรียงสับเปลี่ยน A', B' ที่เป็นไปได้ของ A และ B หรือไม่ โดยที่ A' i +B' i ≥ K สำหรับ i ทั้งหมด โดยที่ A' i หมายถึงองค์ประกอบ ที่ i ในอาร์เรย์ A' และ B' i หมายถึง องค์ประกอบ ที่ 1 ในอาร์เรย์ B' | two_arrays.cpp |
จอห์นกำลังรับคำสั่ง ลูกค้าที่ i เป็นผู้วางคำสั่งซื้อครั้ง ที่ 3 ในเวลา ดัง กล่าว และต้องใช้ เวลา ในการดำเนินการ ลูกค้าจะได้รับออเดอร์ไหนคะ? (ดูรายละเอียดเพิ่มเติมในความคิดเห็นของโซลูชัน) | orders_order.cpp |
ปัญหา | สารละลาย |
---|---|
คุณจะได้รับชุดตัวเลข (เช่น "1234", "567" ฯลฯ) โดยระบุการผสมตัวอักษรที่เป็นไปได้ทั้งหมดที่เราสามารถสร้างจากชุดตัวเลขนี้ โดยอิงตามแผนผังที่เราเห็นบนแป้นหมายเลขโทรศัพท์/มือถือ หากคุณเคยพิมพ์ SMS ในโทรศัพท์แบบเก่าคุณจะรู้ เช่น "1" ถูกแมปกับ "abc", 2 ถูกแมปกับ "def" สามารถดูภาพ..
| dialpad_combinations.cpp |
ใช้การแมชชีนรูปแบบไวด์การ์ดพร้อมรองรับ '?' & ' '.
| wild_card_matching.cpp |
ใช้กระดาน 2 มิติและรายการคำศัพท์จากพจนานุกรม ค้นหาคำที่เป็นไปได้ทั้งหมดบนกระดานจากรายการ (ตรวจสอบตัวอย่างในโซลูชัน) | word_search.cpp |
ปัญหา | สารละลาย |
---|---|
เมื่อกำหนดอาร์เรย์จำนวนเต็มที่เรียงลำดับโดยไม่มีการซ้ำ ให้ส่งคืนผลสรุปของช่วง ตัวอย่างเช่น เมื่อกำหนด [0,1,2,4,5,7] ให้ส่งคืน ["0->2","4->5","7"] | summary_ranges.cpp |
กำหนดเมทริกซ์ 2 มิติ โดยมีคุณสมบัติดังต่อไปนี้
| search2DII.cpp |
เมื่อกำหนดอาร์เรย์จำนวนเต็มที่ไม่ได้เรียงลำดับ ให้ค้นหาจำนวนเต็มบวกแรกที่หายไป ตัวอย่าง: [1,2,0] ควรส่งคืน 3 และ [3,4,-1,1] ควรส่งคืน 2 ความซับซ้อนของเวลาที่คาดหวัง O(n) และวิธีแก้ปัญหาควร ใช้พื้นที่คงที่ | firstMissingPositiveNum.cpp |
เมื่อพิจารณาอาร์เรย์จำนวนเต็มที่ไม่เรียงลำดับ ให้ค้นหาความยาวของลำดับองค์ประกอบที่ยาวที่สุดติดต่อกัน ตัวอย่างเช่น: ให้ [100, 4, 200, 1, 3, 2] ลำดับองค์ประกอบที่ต่อเนื่องกันที่ยาวที่สุดคือ [1, 2, 3, 4] คืนความยาว: 4. อัลกอริทึมควรทำงานในความซับซ้อน O(n) | ยาวที่สุดConsecutiveSeq.cpp |
เมื่อกำหนดอาร์เรย์จำนวนเต็มสองตัวที่เรียงลำดับแล้ว nums1 และ nums2 ให้รวม nums2 เข้ากับ nums1 เป็นอาร์เรย์ที่เรียงลำดับหนึ่งตัว คุณอาจถือว่า nums1 มีพื้นที่เพียงพอ (ขนาดที่มากกว่าหรือเท่ากับ m + n) เพื่อเก็บองค์ประกอบเพิ่มเติมจาก nums2 จำนวนองค์ประกอบที่เริ่มต้นใน nums1 และ nums2 คือ m และ n ตามลำดับ | mergeArrays.cpp |
เมื่อพิจารณาอาร์เรย์ของจำนวนเต็มที่ไม่เป็นลบ คุณจะอยู่ในตำแหน่งเริ่มต้นที่ดัชนีแรกของอาร์เรย์ แต่ละองค์ประกอบในอาร์เรย์แสดงถึงความยาวการกระโดดสูงสุดของคุณที่ตำแหน่งนั้น พิจารณาว่าคุณสามารถไปถึงดัชนีสุดท้ายได้หรือไม่ ตัวอย่างเช่น:
| JumpGame.cpp |
เมื่อกำหนดจำนวนเต็มบวก ให้ส่งกลับชื่อคอลัมน์ที่เกี่ยวข้องตามที่ปรากฏในแผ่นงาน Excel ตัวอย่างเช่น 1 -> A, 2 -> B,...26 -> Z, 27 -> AA, 28 -> AB, ...705 -> AAC | excelColSheetTitle.cpp |
เมื่อกำหนดเลขอาร์เรย์ ให้เขียนฟังก์ชันเพื่อย้าย 0 ทั้งหมดไปที่จุดสิ้นสุดของอาร์เรย์ โดยที่ยังคงรักษาลำดับสัมพัทธ์ขององค์ประกอบที่ไม่เป็นศูนย์ ตัวอย่างเช่น กำหนดให้ nums = [0, 1, 0, 3, 12] หลังจากเรียกใช้ฟังก์ชันแล้ว nums ควรเป็น [1, 3, 12, 0, 0] | moveZeroes.cpp |
เมื่อระบุอาร์เรย์ของจำนวนเต็ม ให้ค้นหาว่าอาร์เรย์มีจำนวนซ้ำกันหรือไม่ ฟังก์ชันควรคืนค่าเป็นจริงหากค่าใดๆ ปรากฏขึ้นอย่างน้อยสองครั้งในอาร์เรย์ และควรส่งคืนค่าเท็จหากทุกองค์ประกอบมีความแตกต่างกัน | มีDuplicate.cpp |
จากรายการ ให้หมุนรายการไปทางขวาตาม k ตำแหน่ง โดยที่ k ไม่ใช่ค่าลบ ตัวอย่างเช่น:
| RotList.cpp |
เมื่อระบุคำสองคำคือ word1 และ word2 ให้ค้นหาจำนวนขั้นตอนขั้นต่ำที่จำเป็นในการแปลง word1 เป็น word2 (การดำเนินการแต่ละครั้งนับเป็น 1 ขั้นตอน) คุณมีการดำเนินการ 3 อย่างต่อไปนี้ที่ได้รับอนุญาตในคำเดียว:
| แก้ไขDistance.cpp |
กำหนดต้นไม้ไบนารี เติมแต่ละพอยน์เตอร์ถัดไปเพื่อชี้ไปยังโหนดขวาถัดไป หากไม่มีโหนดขวาถัดไป ตัวชี้ถัดไปควรตั้งค่าเป็น NULL เริ่มแรก ตัวชี้ถัดไปทั้งหมดจะถูกตั้งค่าเป็น NULL คุณสามารถใช้พื้นที่เพิ่มเติมคงที่เท่านั้น คุณอาจสันนิษฐานว่าเป็นแผนผังไบนารีที่สมบูรณ์แบบ (กล่าวคือ ใบไม้ทั้งหมดอยู่ในระดับเดียวกัน และผู้ปกครองทุกคนมีลูกสองคน) | เชื่อมต่อNextPointers.cpp |
เมื่อกำหนดให้วงเล็บมี n คู่ ให้เขียนฟังก์ชันเพื่อสร้างวงเล็บที่มีรูปแบบถูกต้องรวมกันทั้งหมด ตัวอย่างเช่น เมื่อกำหนด n = 3 ชุดคำตอบคือ "((()))", "(()())", "(())()", "()(())", "( )()()" | Generate_parenthesis.cpp |
เมื่อกำหนดอาร์เรย์ที่มีตัวเลขเฉพาะ n ตัวที่นำมาจาก 0, 1, 2, ..., n ให้ค้นหาตัวเลขที่หายไปจากอาร์เรย์ ตัวอย่างเช่น กำหนด nums = [0, 1, 3] ให้คืนค่า 2 | miss_number.cpp |
สมมติว่าอาร์เรย์ที่เรียงลำดับถูกหมุนที่จุดหมุนที่คุณไม่รู้จักมาก่อน (เช่น 0 1 2 4 5 6 7 อาจกลายเป็น 4 5 6 7 0 1 2) ค้นหาองค์ประกอบขั้นต่ำ คุณอาจถือว่าไม่มีรายการที่ซ้ำกันในอาร์เรย์ | find_min_rotated.cpp |
เมื่อกำหนดอาร์เรย์ S ของจำนวนเต็ม n ให้ค้นหาจำนวนเต็มสามตัวใน S โดยที่ผลรวมใกล้เคียงกับตัวเลขที่กำหนดมากที่สุด เป้าหมาย ส่งกลับผลรวมของจำนวนเต็มทั้งสาม คุณอาจสันนิษฐานว่าแต่ละอินพุตจะมีวิธีแก้ปัญหาเดียวเท่านั้น | threeSumClosest.cpp |
ให้ n จำนวนเต็มที่ไม่เป็นลบ a 1 , a 2 , ..., a n โดยที่แต่ละค่าแสดงถึงจุดที่พิกัด (i, a i ) เส้นแนวตั้ง n เส้นถูกลากขึ้นโดยให้จุดปลายทั้งสองของเส้น i อยู่ที่ (i, a i ) และ (i, 0) หาเส้นตรงสองเส้นที่ประกอบกับแกน x ทำให้เกิดภาชนะ โดยที่ภาชนะนั้นมีน้ำมากที่สุด หมายเหตุ: คุณไม่สามารถเอียงภาชนะได้ | maxArea.cpp |
เมื่อพิจารณาจากต้นไม้ไบนารี่ที่มีตัวเลขตั้งแต่ 0-9 เท่านั้น แต่ละเส้นทางจากรากสู่ใบไม้สามารถแทนตัวเลขได้ ตัวอย่างคือเส้นทาง root-to-leaf 1->2->3 ซึ่งแทนตัวเลข 123 ค้นหาผลรวมของตัวเลข root-to-leaf ทั้งหมด ตัวอย่างในความคิดเห็นของโซลูชัน | sumRootToLeafNumbers.cpp |
สมมติว่าคุณมีอาร์เรย์ที่องค์ประกอบ ith คือราคาของหุ้นที่กำหนดในวันที่ i หากคุณได้รับอนุญาตให้ทำธุรกรรมได้มากที่สุดเพียงหนึ่งรายการ (เช่น ซื้อหนึ่งรายการและขายหุ้นหนึ่งหุ้น) ให้ออกแบบอัลกอริทึมเพื่อค้นหาผลกำไรสูงสุด | maxProfitStock.cpp |
เมื่อกำหนดตาราง amxn ที่เต็มไปด้วยตัวเลขที่ไม่เป็นลบ ให้ค้นหาเส้นทางจากซ้ายบนไปขวาล่างซึ่งจะย่อผลรวมของตัวเลขทั้งหมดตามเส้นทางให้เหลือน้อยที่สุด หมายเหตุ: คุณสามารถเลื่อนลงหรือไปทางขวาได้ตลอดเวลาเท่านั้น | minPath.cpp |
นับจำนวนจำนวนเฉพาะที่น้อยกว่าจำนวนที่ไม่เป็นลบ n | countPrimes.cpp |
ค้นหาชุดค่าผสมที่เป็นไปได้ทั้งหมดของตัวเลข k ซึ่งรวมกันได้เป็นจำนวน n โดยกำหนดให้ใช้ได้เฉพาะตัวเลขตั้งแต่ 1 ถึง 9 เท่านั้น และแต่ละชุดควรเป็นชุดตัวเลขที่ไม่ซ้ำกัน ตรวจสอบให้แน่ใจว่าตัวเลขภายในชุดเรียงลำดับจากน้อยไปหามาก ตัวอย่าง : สำหรับ k = 3, n = 9 ผลลัพธ์จะเป็น [[1,2,6], [1,3,5], [2,3,4]] ในทำนองเดียวกันสำหรับ k = 3, n = 7 ผลลัพธ์ จะเป็น [[1,2,4]] | COMBINATIONSUM3.cpp |
เมื่อกำหนดตัวเลขจำนวนเต็มที่ไม่เป็นลบ ให้บวกตัวเลขทั้งหมดซ้ำๆ จนกระทั่งผลลัพธ์มีเพียงหลักเดียว ตัวอย่างเช่น: ให้ num = 38 กระบวนการจะเป็นดังนี้: 3 + 8 = 11, 1 + 1 = 2 เนื่องจาก 2 มีตัวเลขเพียงหลักเดียว ให้ส่งคืน ติดตามผล: คุณสามารถทำได้โดยไม่ต้องวนซ้ำ / เรียกซ้ำในรันไทม์ O (1) หรือไม่? | addDigits.cpp |
ให้เมทริกซ์ที่มีค่าเซลล์เป็น 0 หรือ 1 ค้นหาความยาวของเส้นทางที่สั้นที่สุดจาก (a1, b1) ถึง (a2, b2) เพื่อให้สามารถสร้างเส้นทางผ่านเซลล์ที่มีค่า 1 เท่านั้นและคุณสามารถเดินทางได้เพียง 4 เท่านั้น ทิศทางที่เป็นไปได้ เช่น ซ้าย ขวา ขึ้นและลง | shortest_path_maze.cpp |
ระยะห่างของแฮมมิงระหว่างจำนวนเต็มสองตัวคือจำนวนตำแหน่งที่บิตที่สอดคล้องกันแตกต่างกัน เมื่อกำหนดจำนวนเต็มสองตัว x และ y ให้คำนวณระยะทางแฮมมิง | hamming_distance.cpp |
ให้ต้นไม้ไบนารี่สองต้นแล้วลองจินตนาการว่าเมื่อคุณวางต้นหนึ่งเพื่อปกปิดอีกต้นหนึ่ง โหนดบางต้นของต้นไม้ทั้งสองจะทับซ้อนกันในขณะที่ต้นอื่นไม่ได้ทับซ้อนกัน คุณต้องรวมพวกมันเข้ากับแผนผังไบนารีใหม่ กฎการผสานคือถ้าสองโหนดทับซ้อนกัน ให้รวมค่าโหนดขึ้นเป็นค่าใหม่ของโหนดที่ผสาน มิฉะนั้นโหนด NOT null จะถูกนำมาใช้เป็นโหนดของแผนผังใหม่ | merge_trees.cpp |
เขียนฟังก์ชันที่รับสตริงเป็นอินพุตและย้อนกลับเฉพาะสระของสตริง | Reverse_vowels.cpp |
เมื่อกำหนดสตริง ให้เรียงลำดับจากลดลงตามความถี่ของอักขระ ตัวอย่างเช่น
| sortCharByFrequency.cpp |
ผลคูณของอาร์เรย์ยกเว้นตัวเอง เมื่อกำหนดอาร์เรย์ของจำนวนเต็ม n โดยที่ n > 1, nums ส่งคืนเอาต์พุตอาร์เรย์โดยที่เอาต์พุต [i] เท่ากับผลคูณขององค์ประกอบทั้งหมดของ nums ยกเว้น nums[i] | product_ยกเว้น_self.cpp |
เมื่อกำหนดอาร์เรย์ที่เรียงลำดับแล้ว ให้ลบรายการที่ซ้ำกันออกและส่งคืนความยาวใหม่ ไม่สำคัญว่าจะมีอะไรอยู่ในอาร์เรย์นอกเหนือจากขนาดองค์ประกอบเฉพาะ พื้นที่ O(1) ที่คาดหวังและความซับซ้อนของเวลา O(n) | Remove_duplicates.cpp |
นับจำนวนเกาะในตาราง เมื่อกำหนดตารางที่แทน 1 แทนผืนดิน และ 0 แทนผืนน้ำ ให้กำหนดจำนวนเกาะ (รายละเอียดเพิ่มเติมในความคิดเห็นเกี่ยวกับปัญหา) | count_islands.cpp |
ค้นหาค่ามัธยฐานจากสตรีมข้อมูล ออกแบบโครงสร้างข้อมูลที่รองรับ addNum เพื่อเพิ่มตัวเลขลงในสตรีม และ findMedian เพื่อส่งคืนค่ามัธยฐานของตัวเลขปัจจุบันที่เห็นจนถึงขณะนี้ นอกจากนี้ หากการนับตัวเลขเป็นเลขคู่ ให้ส่งกลับค่าเฉลี่ยขององค์ประกอบตรงกลาง 2 รายการ หรือส่งกลับค่ามัธยฐานเป็นอย่างอื่น | median_stream.cpp |
ลบจำนวนวงเล็บที่ไม่ถูกต้องขั้นต่ำออกเพื่อทำให้สตริงอินพุตถูกต้อง ส่งคืนผลลัพธ์ที่เป็นไปได้ทั้งหมด หมายเหตุ: สตริงอินพุตอาจมีตัวอักษรอื่นที่ไม่ใช่วงเล็บ (และ) | remove_invalid_parenthesis.cpp |
ให้อาร์เรย์และค่าลบอินสแตนซ์ทั้งหมดของค่านั้นในสถานที่และส่งคืนความยาวใหม่ อย่าจัดสรรพื้นที่พิเศษสำหรับอาร์เรย์อื่นคุณต้องทำสิ่งนี้โดยการแก้ไขอาร์เรย์อินพุตในสถานที่ด้วยหน่วยความจำพิเศษ O (1) ลำดับขององค์ประกอบสามารถเปลี่ยนแปลงได้ ไม่สำคัญว่าคุณจะทิ้งอะไรไว้เกินความยาวใหม่ | remove_element.cpp |
ค้นหาจุดตัดของสองอาร์เรย์/เวกเตอร์เนื่องจากเวกเตอร์สองตัวค้นหาผลลัพธ์ของการโต้ตอบของพวกเขา ผลลัพธ์ควรมีอักขระที่ไม่ซ้ำกันเท่านั้นและสามารถอยู่ในลำดับใดก็ได้ | intersection_of_array.cpp |
ให้รูปแบบและสตริง str ให้ค้นหาว่า str เป็นไปตามรูปแบบเดียวกัน ที่นี่ตามหมายถึงการจับคู่เต็มรูปแบบเช่นมี bijection ระหว่างตัวอักษรในรูปแบบและคำที่ไม่ว่างเปล่าใน str ตัวอย่าง: | |
pattern = "abba", str = "สุนัขแมวสุนัข" ควรกลับมาเป็นจริง | |
pattern = "abba", str = "ปลาแมวแมว" ควรกลับมาเป็นเท็จ | |
pattern = "aaaa", str = "สุนัขแมวสุนัข" ควรกลับมาเป็นเท็จ | |
pattern = "abba", str = "สุนัขสุนัขสุนัข" ควรกลับมาเป็นเท็จ | word_pattern.cpp |
คุณได้รับเวกเตอร์ของตัวเลขที่แต่ละหมายเลขแสดงถึง | |
ราคาหุ้นในวันที่ หากคุณได้รับอนุญาตให้เสร็จสมบูรณ์เท่านั้น | |
หนึ่งธุรกรรมต่อวัน (เช่นซื้อหนึ่งและขายหนึ่งหุ้น), การออกแบบ | |
อัลกอริทึมเพื่อค้นหากำไรสูงสุด | best_time_to_buy_sell.cpp |
ได้รับประโยคให้ย้อนกลับลำดับของตัวละครในแต่ละคำภายในประโยคในขณะที่ยังคงรักษาช่องว่างและคำสั่งเริ่มต้น | |
ตัวอย่าง: | |
อินพุต: เธอชอบช็อคโกแลต | |
เอาท์พุท: ehs sevol etalocohc | reverse_words.cpp |