หน้าแรก
หน้าแรก
สมมติว่าเรามีรายการที่เชื่อมโยง เราต้องย้อนกลับ ดังนั้นหากรายการเป็นเหมือน 1 → 3 → 5 → 7 รายการกลับรายการใหม่จะเป็น 7 → 5 → 3 → 1 เพื่อแก้ปัญหานี้ เราจะปฏิบัติตามแนวทางนี้ - กำหนดขั้นตอนหนึ่งเพื่อดำเนินการกลับรายการแบบเรียกซ้ำเพื่อแก้ปัญหา (หัว, ย้อนกลับ) ถ้าหัวไม่อยู่ก็คืนหัว temp :=head.next hea
สมมติว่าเรามีรายการตัวเลข เราต้องตรวจสอบว่ารายการมีองค์ประกอบที่ซ้ำกันหรือไม่ ดังนั้นหากรายการเป็นแบบ [1,5,6,2,1,3] ก็จะคืนค่า 1 เนื่องจากมี 1 สองรายการ แต่ถ้ารายการเป็น [1,2,3,4] ก็จะเป็น เท็จ เนื่องจากไม่มีข้อมูลซ้ำกัน เพื่อแก้ปัญหานี้ เราจะปฏิบัติตามแนวทางนี้ - เราทราบดีว่าโครงสร้างข้อมูลชุดเก็บ
สมมติว่าเรามีต้นไม้ไบนารี งานของเราคือการสร้างไบนารีทรีแบบกลับหัว ดังนั้นถ้าต้นไม้เป็นเหมือนด้านล่าง − ต้นไม้กลับหัวจะเป็นแบบนี้ เพื่อแก้ปัญหานี้ เราจะใช้วิธีเรียกซ้ำ ถ้ารูทเป็นโมฆะ ให้ส่งคืน สลับตัวชี้ซ้ายและขวา แก้ทรีย่อยด้านซ้ายและทรีย่อยด้านขวาซ้ำๆ ตัวอย่าง (Python) ให้เราดูการใช้งานต่อ
สมมติว่าเรามีรายการเชื่อมโยงที่มีองค์ประกอบไม่กี่อย่าง งานของเราคือการเขียนฟังก์ชันที่จะลบโหนดที่กำหนดออกจากรายการ ดังนั้นหากรายการเป็นเหมือน 1 → 3 → 5 → 7 → 9 และหลังจากลบ 3 มันจะเป็น 1 → 5 → 7 → 9 พิจารณาว่าเรามี โหนด ตัวชี้เพื่อชี้โหนดที่จะลบ เราต้องดำเนินการเหล่านี้เพื่อลบโหนด - node.val =node
โดยพื้นฐานแล้วแอนนาแกรมเป็นการเรียงสับเปลี่ยนทั้งหมดของสตริงหรือรูปแบบที่กำหนด อัลกอริธึมการค้นหารูปแบบนี้แตกต่างกันเล็กน้อย ในกรณีนี้ ไม่ได้ค้นหาเฉพาะรูปแบบที่แน่นอนเท่านั้น แต่ยังค้นหาการจัดเรียงที่เป็นไปได้ทั้งหมดของรูปแบบที่กำหนดในข้อความ ดังนั้นหากอินพุตคือ ANAGRAM และ NAAGARM แสดงว่าเป็นแอนนาแ
สมมติว่าเรามีรายการตัวเลขตั้งแต่ 0 ถึง n มีหมายเลขหนึ่งที่ขาดหายไป เราต้องหาตัวเลขที่หายไปด้วยวิธีที่มีประสิทธิภาพ ดังนั้น ถ้า A =[0, 1, 2, 3, 4, 5, 7, 8, 9] ตัวเลขที่หายไปคือ 6 เพื่อแก้ปัญหานี้ เราจะใช้วิธีการค้นหาแบบไบนารี เรียงลำดับรายการจากน้อยไปมาก สูง =ความยาวของ A และต่ำ =0 ในขณะที่ต่ำ <สูง
สมมติว่าเรามีอาร์เรย์ที่จะเก็บตัวเลขไว้ มีค่าที่ไม่ใช่ศูนย์เช่นเดียวกับค่าศูนย์ ดังนั้นเราต้องส่งศูนย์ทั้งหมดไปทางขวาโดยไม่เปลี่ยนลำดับสัมพัทธ์ของตัวเลขอื่น ดังนั้นหากอาร์เรย์เป็นแบบ [0, 1, 5, 0, 3, 8, 0, 0, 9] ดังนั้นอาร์เรย์สุดท้ายจะเป็น [1, 5, 3, 8, 9, 0, 0, 0, 0 ] เพื่อแก้ปัญหานี้ เราจะทำตามขั้
สมมติว่าเรามีตัวเลข n เราต้องเช็คว่าเลขยกกำลัง 3 หรือเปล่า ดังนั้นหากตัวเลขเช่น n =27 นั่นคือกำลังของ 3 ผลลัพธ์จะเป็นจริง ถ้า n =15 มันจะเป็นเท็จ เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - เราจะใช้ลอการิทึมแก้ปัญหานี้ ถ้า [log10(n) / log10(3)] mod 1 ==0 มันจะเป็นพลังสาม มิฉะนั้นจะไม่ ตัวอย่าง
สมมติว่าเรามีอาร์เรย์ของอักขระ เราต้องย้อนกลับสตริงโดยไม่ต้องใช้ช่องว่างเพิ่มเติม ดังนั้นหากสตริงเป็นเหมือน [H, E, L, L, O] ผลลัพธ์จะเป็น [O, L, L, E, H] เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - ใช้ตัวชี้สองตัวเพื่อเริ่มต้น =0 และสิ้นสุด =ความยาวของสตริง – 1 สลับอักขระตัวแรกและตัวสุดท้าย เพิ่ม
สมมติว่าเรามีจำนวนเต็มสองตัว a และ b งานของเราคือการหาผลรวมของจำนวนเต็มสองตัวนี้ ข้อจำกัดอย่างหนึ่งคือ เราไม่สามารถใช้ตัวดำเนินการใดๆ เช่น + หรือ - ดังนั้นถ้า a =5 และ b =7 ผลลัพธ์จะเป็น 12 เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - สำหรับการแก้ปัญหา เราจะใช้ตัวดำเนินการเชิงตรรกะระดับบิต ถ้า b =
สมมติว่าเรามีสตริงและเราต้องหาอักขระที่ไม่ซ้ำกันตัวแรกในสตริง ดังนั้นหากสตริงเป็นเหมือน คน อักษรตัวแรกที่เกิดขึ้นจะเป็นตัว o ดังนั้นดัชนีจะถูกส่งคืน นั่นคือ 2 ตรงนี้ หากไม่มีอักขระดังกล่าว ให้คืนค่า -1 เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - สร้างแผนที่ความถี่เดียว สำหรับอักขระ c แต่ละตัวในสต
สมมติว่าเรามีตัวเลข n เราต้องแสดงสตริงของตัวเลขทั้งหมดตั้งแต่ 1 ถึง n แต่มีข้อจำกัดบางประการ ถ้าตัวเลขหารด้วย 3 ลงตัว ให้เขียน Fizz แทนตัวเลข ถ้าตัวเลขหารด้วย 5 ลงตัว ให้เขียน Buzz แทนตัวเลข ถ้าตัวเลขหารด้วย 3 และ 5 ลงตัวทั้งคู่ ให้เขียน FizzBuzz แทนตัวเลข เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่าน
พิจารณาว่าเรามีจำนวนเต็มสองจำนวน เราต้องหาระยะแฮมมิงของพวกมัน ระยะแฮมมิงคือจำนวนบิตที่นับบิตต่างกันระหว่างตัวเลขสองตัว ดังนั้นหากตัวเลขเป็น 7 และ 15 จะเป็น 0111 และ 1111 ในรูปแบบไบนารี่ MSb จะต่างกัน ดังนั้นระยะ Hamming คือ 1 เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - สำหรับ i =31 เหลือ 0 b1 =กา
พิจารณาว่าเรามีรายการเชื่อมโยง และเราต้องตรวจสอบว่ามีวงจรหรือไม่ เพื่อแสดงวัฏจักรในรายการที่เชื่อมโยงที่กำหนด เราจะใช้ตัวชี้จำนวนเต็มหนึ่งตัวที่เรียกว่า pos ตำแหน่งนี้แสดงถึงตำแหน่งในรายการเชื่อมโยงที่มีการเชื่อมต่อหาง ดังนั้นหากตำแหน่งเป็น -1 แสดงว่าไม่มีวงจรอยู่ในรายการที่เชื่อมโยง ตัวอย่างเช่น รา
ในที่นี้เราจะมาดูวิธีการสร้างสแต็กที่สามารถทำ push, pop, top และดึงข้อมูลองค์ประกอบ min ได้ในเวลาคงที่ ดังนั้นฟังก์ชันจะเป็น push(x), pop(), top() และ getMin() เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - เริ่มต้นสแต็กโดยองค์ประกอบขั้นต่ำเป็นอินฟินิตี้ สำหรับการกดการดำเนินการ push(x) ถ้า x
สมมติว่าเรามีรายการเชื่อมโยง A และ B สองรายการ มีองค์ประกอบบางอย่างในรายการที่เชื่อมโยงเหล่านี้ เราต้องคืนค่าอ้างอิงของจุดสี่แยก อินพุตคือ intersectionVal =8, A =[4,1,8,4,5], B =[5,0,1,8,4,5], skipA =2 และ skipB =3 สิ่งเหล่านี้ใช้เพื่อข้าม 2 องค์ประกอบจาก A และข้าม 3 องค์ประกอบจาก B. เพื่อแก้ปัญหาน
สมมติว่าเรามีตัวเลข x ที่ไม่ได้ลงนาม 1 ตัว และเราสามารถหาการแทนค่าเลขฐานสองของตัวเลขนั้นได้อย่างง่ายดาย (จำนวนเต็มไม่มีเครื่องหมาย 32 บิต) งานของเราคือย้อนกลับบิต ดังนั้นหากการแทนค่าไบนารีเป็นเหมือน 00000000000000000001001110100 บิตที่ย้อนกลับจะเป็น 0010111001000000000000000000000000 ดังนั้นเราต้องส
ในที่นี้เราจะมาดูวิธีการตรวจจับตัวเลข n เป็นเลข Happy กันหรือไม่ ดังนั้นจำนวนสุขคือตัวเลข โดยที่เริ่มต้นด้วยจำนวนเต็มบวกใดๆ แทนที่ตัวเลขด้วยผลรวมของกำลังสองของหลัก กระบวนการนี้จะถูกทำซ้ำจนกว่าจะกลายเป็น 1 มิฉะนั้นจะวนซ้ำเป็นรอบไม่รู้จบ ตัวเลขเหล่านั้นเมื่อพบตัวที่ 1 จะเป็นเลขมงคล สมมติว่าตัวเลขคือ
สมมติว่าเรามีแผนผังการค้นหาแบบไบนารี เราต้องหาโหนดบรรพบุรุษร่วมที่ต่ำที่สุดของสองโหนดที่กำหนด LCA ของสองโหนด p และ q เป็นโหนดที่ต่ำที่สุดในทรีที่มีทั้ง p และ q เป็นโหนด ดังนั้นถ้าไบนารีทรีเป็นเหมือน [6, 2, 8, 0, 4, 7, 9, null, null, 3, 5] ต้นไม้จะเป็นเช่น − LCA ของ 2 และ 8 คือ 6 เพื่อแก้ปัญหานี้
สมมติว่าในบริษัทหนึ่ง Product Manager เป็นผู้นำทีมที่พัฒนาผลิตภัณฑ์ใหม่ สมมติว่าเวอร์ชันล่าสุดไม่ผ่านการตรวจสอบคุณภาพ เนื่องจากแต่ละเวอร์ชันได้รับการพัฒนาตามเวอร์ชันก่อนหน้า เวอร์ชันทั้งหมดหลังจากเวอร์ชันที่เสียหายจะไม่ดี ดังนั้นเราจึงมีอาร์เรย์ A ที่มีองค์ประกอบ n [1, 2, … n] และเราต้องหาเวอร์ชันที