หน้าแรก
หน้าแรก
สร้างเมธอด MoveZeros สำรวจผ่านอาร์เรย์และนับจำนวนศูนย์ในอาร์เรย์ ขึ้นอยู่กับขนาดการนับทำให้เซลล์สุดท้ายทั้งหมดเป็นศูนย์ ส่งคืนโดยไม่ประมวลผลหากความยาวของอาร์เรย์เป็นโมฆะหรือว่างเปล่า ผลลัพธ์สุดท้ายจะเป็น nums Array ความซับซ้อนของเวลาคือ O(N) เนื่องจากเราข้ามผ่านอาร์เรย์เพียงครั้งเดียว ความซับซ้อนของ
สองสตริง X และ Y ถูกเรียกว่า isomorphic หากการเกิดขึ้นทั้งหมดของอักขระแต่ละตัวใน X สามารถแทนที่ด้วยอักขระอื่นเพื่อรับ Y และในทางกลับกัน ตัวอย่างเช่น พิจารณาสตริง ACAB และ XCXY อักขระที่เกิดขึ้นทั้งหมดต้องถูกแทนที่ด้วยอักขระอื่นในขณะที่รักษาลำดับของอักขระ ห้ามอักขระสองตัวจับคู่กับอักขระตัวเดียวกัน แต
จากอินพุตสตริงที่กำหนด ให้ใช้เทคนิคหน้าต่างบานเลื่อนโดยมีตัวชี้ 2 ตัว i และ j ทั้ง i และ j จะชี้ไปที่อักขระเดียวกันในสตริง ข้ามผ่านสตริงและเพิ่มลงในรายการ หากพบอักขระที่ซ้ำกัน ให้ลบออกจากรายการ มิฉะนั้น ให้ต่อท้ายรายการ ตัวอย่างที่ 1 ป้อนข้อมูล − s =abcabcbb ผลลัพธ์ − 3 คำอธิบาย − คำตอบคือ abc โด
LongestIncreaingSubsequence คืนค่าจำนวนเต็มของลำดับย่อยที่ต่อเนื่องกันจากอาร์เรย์ วิธีนี้มี for loop ซึ่งจะวนซ้ำและติดตามตัวเลข ผลลัพธ์สุดท้ายจะมีการคำนวณสูงสุด ความซับซ้อนของเวลาคือ O(N) เนื่องจากทุกองค์ประกอบถูกเข้าชมครั้งเดียว และความซับซ้อนของพื้นที่คือ O(1) เนื่องจากเราไม่ได้ใช้ประโยชน์จากพื้นท
ลำดับฟีโบนักชีคือชุดของตัวเลขที่ขึ้นต้นด้วยหนึ่งหรือศูนย์ ตามด้วยหนึ่ง และดำเนินการตามกฎที่แต่ละหมายเลข (เรียกว่าหมายเลขฟีโบนักชี) เท่ากัน เป็นผลรวมของตัวเลขสองตัวก่อนหน้า วิธีการจากบนลงล่างมุ่งเน้นไปที่การแยกปัญหาใหญ่ออกเป็นชิ้นเล็ก ๆ และเข้าใจได้ ความซับซ้อนของพื้นที่คือ O(N) เนื่องจากเรากำลังสร้า
ลำดับฟีโบนักชีคือชุดของตัวเลขที่เริ่มต้นด้วยหนึ่งหรือศูนย์ ตามด้วยหนึ่ง และดำเนินการตามกฎที่แต่ละหมายเลข (เรียกว่าหมายเลขฟีโบนักชี) เท่ากัน เป็นผลรวมของตัวเลขสองตัวก่อนหน้า วิธีจากล่างขึ้นบนจะเน้นที่การแก้ปัญหาเล็กๆ น้อยๆ ในระดับพื้นฐานก่อน จากนั้นจึงรวมเข้าเป็นโซลูชันที่สมบูรณ์และครบถ้วน ความซับซ้อ
MinimumStepstoOneTopdownApproach รับจำนวนเต็ม n และอาร์เรย์จำนวนเต็มเป็นอินพุต พารามิเตอร์ n มีจำนวนขององค์ประกอบทั้งหมด เงื่อนไขเริ่มต้นตรวจสอบว่า n เท่ากับ 1 หรือไม่ ถ้า n เท่ากับ 1 ให้คืนค่า 0 เริ่มต้น op1,op2 และ op3 เป็นค่าสูงสุด หาก n mod 3 เท่ากับ 0 ให้เรียก MinimumStepstoOneTopdownApproach ซ
MinimumStepstoOneBottomdownApproachtakes จำนวนเต็ม n เป็นอินพุต พารามิเตอร์ n มีจำนวนขององค์ประกอบทั้งหมด เงื่อนไขเริ่มต้นตรวจสอบว่า n เท่ากับ 1 หรือไม่ ถ้า n เท่ากับ 1 ให้คืนค่า 0 เริ่มต้น op1, op2 และ op3 เป็นค่าสูงสุด หาก n mod 3 เท่ากับ 0 ให้เรียก MinimumStepstoOneBottomdownApproach ซ้ำๆ และกำหน
CoinChangeTopDownApproach ใช้พารามิเตอร์ 4 ตัว n คือจำนวนเงิน อาร์เรย์เหรียญประกอบด้วยเหรียญที่ต้องการคำนวณ t คือจำนวนเหรียญทั้งหมด dp array จะเก็บค่าล่วงหน้าทั้งหมด ค่าที่คำนวณได้ หากจำนวนเงินเป็น 0 ให้คืนค่า 0 หากคำนวณค่าไว้แล้วให้คืนค่าจากอาร์เรย์ dp หากไม่คำนวณค่า ให้เรียก CoinChangeTopDownAppro
CoinChangeBottomUpApproach ใช้ 3 พารามิเตอร์เนื่องจากอินพุต n คือจำนวนเงิน อาร์เรย์เหรียญประกอบด้วยจำนวนเหรียญทั้งหมด t มีจำนวนเหรียญทั้งหมด ประกาศอาร์เรย์แบบไดนามิกที่เก็บค่าที่คำนวณไว้ก่อนหน้านี้ วนซ้ำผ่านอาร์เรย์และคำนวณเหรียญขั้นต่ำที่จำเป็นในการคำนวณจำนวน หากคำนวณเสร็จแล้ว ให้นำค่าจากไดนามิกอาร
ในแนวทางวนซ้ำ เราต้องสร้าง 2 คิว คิวหนึ่งบันทึกลูกด้านซ้ายและอีกคิวบันทึกค่าชายด์ที่ถูกต้อง หากต้นไม้ว่างเปล่า ต้นไม้นั้นจะสมมาตรกับแกนตั้งที่เคลื่อนผ่านโหนดรากของมัน มิฉะนั้น ให้ตรวจสอบว่าค่าที่โหนดรูทของทรีย่อยทั้งสองเหมือนกันหรือไม่ ถ้าใช่ ให้ตรวจสอบว่าทรีย่อยด้านซ้ายและแผนผังย่อยด้านขวามีความสมม
ในแนวทางแบบเรียกซ้ำ เราจะพบว่าต้นไม้มีความสมมาตรหรือไม่ ขั้นแรกเราจะตรวจสอบว่าต้นไม้นั้นเป็นโมฆะหรือไม่ ถ้าต้นไม้นั้นเป็นโมฆะ แสดงว่ามีความสมมาตร หากต้นไม้ไม่เป็นโมฆะ เราเรียกว่า amethod issymmetricmirror ใน isSymmetricMirror เราจะได้รับ ค่าของลูกด้านซ้ายและลูกด้านขวา ถ้าทั้งลูกซ้ายและขวาเป็นโมฆะ เร
ในการสลับแผนผังการค้นหาแบบไบนารี เราเรียกเมธอด InvertABinarySearchTree ซึ่งรับโหนดเป็นพารามิเตอร์ หากโหนดเป็น null ให้คืนค่า null หากโหนดไม่เป็น null เราจะเรียก InvertABinarySearchTree ซ้ำๆ โดยส่งค่าลูกซ้ายและขวา และกำหนดค่าลูกด้านขวาให้กับลูกด้านซ้ายและค่าลูกด้านซ้ายให้กับลูกด้านขวา ผลลัพธ์สุดท้ายจ
ต้นไม้เป็นแผนผังการค้นหาแบบไบนารีหากมีลูกด้านซ้ายทั้งหมดน้อยกว่าองค์ประกอบโหนดและชายด์ที่ถูกต้องทั้งหมดมากกว่าองค์ประกอบโหนด เริ่มแรก เราตรวจสอบว่าโหนดมีค่าใด ๆ หรือไม่ หากโหนดนั้นเป็นโมฆะ เราจะพิจารณาว่าเป็นแผนผังการค้นหาไบนารีที่ถูกต้องและคืนค่าเป็นจริง หลังจากตรวจสอบผลลัพธ์ที่เป็นโมฆะของโหนดแล้ว
HasPathsum รับพารามิเตอร์ 2 ตัว อันแรกคือโหนดทรีและอื่น ๆ คือค่าผลรวม ขั้นแรกเราจะตรวจสอบว่าโหนดนั้นเป็นโมฆะหรือไม่ หากโหนดเป็นโมฆะเราจะคืนค่าเท็จ หากโหนดไม่เป็นโมฆะ เราจะเรียกวิธีการเรียกซ้ำของ HasPathSum ในแต่ละขั้นตอนแบบเรียกซ้ำ เราจะลบค่ารวมออกจากค่าโหนดต่อไป หากค่าของผลรวมถึง 0 เราจะสรุปได้ว่าต
เราต้องใช้สามพอยน์เตอร์ ต่ำ กลาง สูง เราจะใช้พอยน์เตอร์ต่ำและกลางในตอนเริ่มต้น และตัวชี้สูงจะชี้ไปที่ส่วนท้ายของอาร์เรย์ที่กำหนด หากอาร์เรย์ [กลาง] =0 ให้สลับอาร์เรย์ [กลาง] กับอาร์เรย์ [ต่ำ] และเพิ่มพอยน์เตอร์ทั้งสองครั้ง หากอาร์เรย์ [กลาง] =1 แสดงว่าไม่จำเป็นต้องมีการสลับ เพิ่มตัวชี้กลางหนึ่งครั
ใช้สองพอยน์เตอร์ ต่ำ สูง เราจะใช้พอยน์เตอร์ต่ำในตอนเริ่มต้น และตัวชี้สูงจะชี้ไปที่ส่วนท้ายของอาร์เรย์ที่กำหนด หากอาร์เรย์ [ต่ำ] =0 แสดงว่าไม่จำเป็นต้องสลับ หากอาร์เรย์ [ต่ำ] =1 จำเป็นต้องมีการสลับ ลดค่าตัวชี้สูงหนึ่งครั้ง ความซับซ้อนของเวลา − O(N) ตัวอย่าง using System; namespace ConsoleApplicat
จากอาร์เรย์และหมายเลข k ปัญหาระบุว่าเราต้องหมุนอาร์เรย์ k ครั้ง หากตัวเลขที่กำหนดคือ 3 อาร์เรย์จะต้องหมุน 3 ครั้ง สร้างฟังก์ชันย้อนกลับซึ่งรับอาร์เรย์ เริ่มต้น และสิ้นสุดเป็นพารามิเตอร์ ในขั้นตอนที่ 1 วิธีการย้อนกลับจาก 0 ถึงความยาวอาร์เรย์ ในขั้นตอนที่ 2 ให้เรียกวิธีการย้อนกลับจาก 0 ถึง k-1
อาร์เรย์ได้รับการจัดเรียงแล้ว เราสามารถเก็บพอยน์เตอร์สองตัว ii และ jj โดยที่ ii เป็นตัววิ่งช้าในขณะที่ jj เป็นตัวเร่งความเร็ว ตราบใดที่ nums[i] =nums[j]nums[i]=nums[j] เราเพิ่ม jj เพื่อข้ามรายการที่ซ้ำกัน เมื่อเราพบ nums[j] !=nums[i] การรันซ้ำได้สิ้นสุดลง ดังนั้นเราต้องคัดลอกค่าของมันไปที่ nums[i +
อาร์เรย์ได้รับการจัดเรียงแล้ว เราสามารถเก็บพอยน์เตอร์สองตัว ii และ jj โดยที่ ii เป็นตัววิ่งช้าในขณะที่ jj เป็นตัวเร่งความเร็ว ตราบใดที่ nums[i] =nums[j]nums[i]=nums[j] เราเพิ่ม jj เพื่อข้ามรายการที่ซ้ำกัน เมื่อเราพบ nums[j] !=nums[i] การรันซ้ำได้สิ้นสุดลง ดังนั้นเราต้องคัดลอกค่าของมันไปที่ nums[i +