หน้าแรก
หน้าแรก
สมมุติว่าเรามีรายการของตัวเลขที่เรียกว่า ก้อนหิน และนี่เป็นตัวแทนของตำแหน่งของหินในแม่น้ำที่เราพยายามจะข้าม การจะข้ามแม่น้ำต้องจบที่หินก้อนสุดท้าย ในแต่ละขั้นตอน เราสามารถกระโดดได้ (k - 1, k หรือ k + 1) ก้าวไปข้างหน้า โดยที่ k คือระยะทางของการกระโดดครั้งสุดท้าย ต้องดูว่าข้ามแม่น้ำได้หรือเปล่า ดังนั
สมมติว่าเรามีสตริงไบนารี และเราสามารถสลับสองบิตใดๆ ก็ได้ เราต้องหาจำนวนสวอปขั้นต่ำที่จำเป็นในการจัดกลุ่มทั้งหมดเข้าด้วยกัน 1111000 เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - data :=รายการ 0s และ 1s จากสตริงไบนารีที่กำหนด ตั้งค่าหนึ่ง :=0, n:=ความยาวของอาร์เรย์ข้อมูล สร้างผลรวมอาร์เรย์ของขนาด n
สมมติว่าเรามีรายการตัวเลขสองรายการ nums0 และ nums1 ที่มีความยาวเท่ากัน และค่าอื่นๆ อีกสองค่า d เป็นระยะทาง และ c เป็นต้นทุน หากเราเริ่มต้นจากดัชนี 0 ที่ nums0 หรือ nums1 และต้องการสิ้นสุดที่ดัชนีสุดท้ายของรายการใดรายการหนึ่ง ตอนนี้ในแต่ละรอบเราสามารถเลือกที่จะสลับไปยังรายการอื่นสำหรับต้นทุน จากนั้นเ
สมมุติว่าเรามีรายการของตัวเลขที่เรียกว่า nums และอีกค่าหนึ่งคือ k เราต้องหาจำนวนลำดับของขนาด k ที่เพิ่มจำนวนขึ้นเรื่อยๆ หากคำตอบมีขนาดใหญ่มาก ให้แก้ไข 10^9 + 7 ดังนั้น หากอินพุตเท่ากับ nums =[2, 3, 4, 1] k =2 เอาต์พุตจะเป็น 3 เนื่องจากเรามีลำดับย่อยของขนาด 2:[2, 3], [3, 4] [2, 4]. เพื่อแก้ปัญหานี้
สมมติว่าเรามีรายการของช่วงเวลาที่แต่ละช่วงมีค่าสามค่า [start, end, profit] เราสามารถดำเนินการได้ครั้งละหนึ่งงานเท่านั้น เราต้องหากำไรให้ได้มากที่สุด ดังนั้น ถ้าอินพุตเหมือนช่วง =[[1, 2, 100],[3, 5, 40],[6, 19, 150],[2, 100, 250]] ผลลัพธ์จะเป็น 350 เนื่องจากเราสามารถหาสองช่วงเวลา [1, 2, 100] และ [2,
สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และอีกค่าหนึ่งคือ k เราต้องหาลำดับย่อยของขนาด k ที่เล็กที่สุดในเชิงพจนานุกรม ดังนั้น หากอินพุตเป็น nums =[2, 3, 1, 10, 3, 4] k =3 ผลลัพธ์จะเป็น [1, 3, 4] เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - l :=ขนาดของ nums, r :=k - 1 ออก :=รายการใหม่ สำหรับ j ใน
สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และอีกค่าหนึ่งคือ k เราต้องหาจำนวนรายการย่อยที่ต้องการให้มี k หมายเลขที่ไม่ซ้ำกันในรายการย่อย ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[2, 2, 3, 4] k =2 เอาต์พุตจะเป็น 3 เนื่องจากเรามีรายการย่อยเช่น [2, 2, 3], [2, 3], [3, 4]. เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเ
สมมติว่าเรามีเมทริกซ์ไบนารี N x M หนึ่งตัว โดยที่ 0 หมายถึงเซลล์ว่างและ 1 หมายถึงเซลล์ที่ถูกบล็อก เริ่มจากมุมซ้ายบน ต้องหาหลายวิธีที่จะไปถึงมุมขวาล่าง หากคำตอบมีขนาดใหญ่มาก ให้แก้ไข 10^9 + 7 ดังนั้นหากอินพุตเป็นแบบ 0 0 1 0 0 0 1 1 0 จากนั้นผลลัพธ์จะเป็น 2 เนื่องจากมีสองวิธีในการไปที่ด้านล่างข
สมมติว่าเรามีไบนารีทรี เราต้องหาทรีย่อยที่ใหญ่ที่สุด (ด้วยจำนวนโหนดสูงสุด) เป็นทรีการค้นหาแบบไบนารี ดังนั้นหากอินพุตเป็นแบบ แล้วผลลัพธ์ที่ได้จะเป็น เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - max_size :=[0] max_node :=[null] กำหนดฟังก์ชัน traverse() นี่จะใช้โหนด ถ้าโหนดเป็น null แล้ว คืนค่า
สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และอีกค่าหนึ่งคือ k เราต้องหาผลรวมที่ใหญ่ที่สุดของรายการย่อยที่ไม่ทับซ้อนกันสามรายการของรายการขนาด k ที่กำหนด ดังนั้น หากอินพุตเป็น nums =[2, 2, 2, -6, 4, 4, 4, -8, 3, 3, 3] k =3 ผลลัพธ์จะเป็น 27 ตามที่เราเลือกได้ รายการย่อย [2, 2, 2], [4, 4, 4] และ [3, 3,
สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และอีกค่าหนึ่งคือ k เราต้องตรวจสอบว่าสามารถแยกรายการออกเป็นรายการย่อยได้หรือไม่ โดยรายการย่อยแต่ละรายการจะมีความยาว ≥ k และเพิ่มขึ้นอย่างมาก รายชื่อไม่ต้องแยกกัน ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[6, 7, 5, 10, 13] k =2 ผลลัพธ์จะเป็น True เนื่องจากการแยกเป
สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และเรียงลำดับแบบไม่ลดจำนวน เราต้องตรวจสอบว่าสามารถแบ่งออกเป็นลำดับย่อยจำนวนเท่าใดก็ได้ โดยแต่ละลำดับย่อยมีความยาวอย่างน้อย 3 และเพิ่มขึ้นต่อเนื่องกัน ดังนั้นหากอินพุตเป็นเหมือน nums =[2, 3, 4, 4, 5, 6, 7] ผลลัพธ์จะเป็น True เนื่องจากเราสามารถแบ่งรายการเป็น
สมมติว่าเรามีรายการของตัวเลขที่เรียกว่า nums เราต้องหาขนาดของลำดับย่อยที่ยาวที่สุดโดยที่ผลต่างระหว่างตัวเลขสองตัวที่ต่อเนื่องกันสลับกันระหว่างค่าบวกและค่าลบ และความแตกต่างแรกอาจเป็นบวกหรือลบก็ได้ ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[6, 10, 4, 2, 3, 9, 4, 7] ผลลัพธ์จะเป็น 6 เนื่องจากลำดับถัดไปที่เป็
สมมติว่าเรามีรายการของตัวเลขที่เรียกว่า nums เราต้องหาความยาวของลำดับย่อยทางคณิตศาสตร์ที่ยาวที่สุด ดังที่เราทราบลำดับ S[i] เป็นลำดับเลขคณิตเมื่อ S[i+1] - S[i] มีค่าเท่ากันสำหรับทุก ๆ i ในช่วง (0 ≤ i <ขนาดของ S - 1) ดังนั้น หากอินพุตเป็น nums =[1, 4, 7, 10, 13, 20, 16] ผลลัพธ์จะเป็น 6 ลำดับย่อย [1,
สมมติว่าเรามีสามสตริง s1, s2 และ s3 เราต้องหาความยาวของลำดับย่อยร่วมที่ยาวที่สุด ดังนั้น หากอินพุตเป็น s1 =ababchemxde s2 =pyakcimde s3 =oauctime ผลลัพธ์จะเป็น 4 เนื่องจากลำดับย่อยทั่วไปที่ยาวที่สุดคือ acme เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - m :=ขนาดของ s1, n :=ขนาดของ s2, o :=ขนาดของ s
สมมติว่าเรามีต้นไม้ไบนารี เราต้องหาความยาวของเส้นทางที่ยาวที่สุดซึ่งผลรวมเป็นเลขคู่ ดังนั้น หากอินพุตเป็นเหมือนรูปภาพ ผลลัพธ์จะเป็น 5 เนื่องจากพาธเป็นเหมือน [5, 2, 4, 8, 5], sum =24(คู่) เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - กำหนดฟังก์ชัน dfs() นี่จะใช้โหนด ถ้าโหนดเป็น null แล้ว คืนคู่ (0,
สมมติว่าเรามีเมทริกซ์ 2 มิติ เราต้องหาความยาวของเส้นทางที่เพิ่มขึ้นอย่างเคร่งครัด ในการข้ามเส้นทางนั้น เราสามารถเลื่อนขึ้น ลง ซ้าย ขวา หรือแนวทแยงได้ ดังนั้นหากอินพุตเป็นแบบ 2 4 6 1 5 7 3 3 9 จากนั้นผลลัพธ์จะเป็น 6 เนื่องจากเส้นทางที่ยาวที่สุดคือ [1, 2, 4, 6, 7, 9] เพื่อแก้ปัญหานี้ เราจะทำตา
สมมติว่าเรามีสตริงตัวพิมพ์เล็ก s; เราต้องหาความยาวของลำดับย่อยพาลินโดรมที่ยาวที่สุดในหน่วย s ดังนั้น หากอินพุตเป็น s =aolpeuvekyl เอาต์พุตจะเป็น 5 เนื่องจาก palindrome เป็น ระดับ เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - n :=ขนาดของ s กำหนดฟังก์ชัน dp() นี่จะใช้เวลา i, j ถ้าฉันเหมือนกับ j แล้ว
สมมติว่าเรามีกราฟ acyclic กำกับหนึ่งรายการที่แสดงโดยรายการที่อยู่ติดกัน เราต้องหาเส้นทางที่ยาวที่สุดในกราฟโดยไม่เกิดโหนดซ้ำ ดังนั้นหากอินพุตเป็นแบบ 2 ที่มีความยาว 4 เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - ตอบ :=0 n :=จำนวนโหนดของกราฟ table :=รายการขนาด n และเติม -1 กำหนดฟังก์ชัน dfs() สิ่
สมมติว่าเรามีสตริง s ซึ่งเราสามารถหมุน ณ จุดใดก็ได้เพียงครั้งเดียว เราต้องหาความยาวของสตริงย่อยพาลินโดรมที่ยาวที่สุดที่เราหาได้จากการดำเนินการนี้ ดังนั้น หากอินพุตเป็น s =elklev ผลลัพธ์จะเป็น 7 เนื่องจากเราสามารถหมุนระหว่าง el และ klev เพื่อให้ได้ levelk ดังนั้นความยาวสตริงย่อยพาลินโฟลิกที่ยาวที่สุ