สมมติว่าเรามีอาร์เรย์ของจำนวนบวก เราต้องตรวจสอบจุด/รายการว่ารายการใดสร้างลำดับการลดลงอย่างเข้มงวดก่อน ตามด้วยลำดับของจำนวนเต็มที่เพิ่มขึ้นอย่างเคร่งครัด นี่คือคุณสมบัติดังต่อไปนี้:เราต้องจำไว้ว่าลำดับต้องมีความยาวขั้นต่ำ 2
นอกจากนี้ เรายังดูแลด้วยว่าค่าสุดท้ายของลำดับการลดลงคือค่าแรกของลำดับที่เพิ่มขึ้น
ดังนั้น หากอินพุตเป็น {5, 4, 3, 4} เอาต์พุตจะเป็น 3 เนื่องจาก {5, 4, 3} ลดลงอย่างเคร่งครัด {3, 4} จะเพิ่มขึ้นอย่างเคร่งครัด
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เพิ่มขึ้น :=1, ลดลง :=1
- n :=ขนาดของอาร์เรย์
- สำหรับฉันในช่วง 1 ถึง n ทำ
- ถ้า array[i]
- ถ้าการเพิ่มขึ้นเท่ากับ 1 แล้ว
- ลดลง :=ลด + 1
- มิฉะนั้น
- คืน -1
- ถ้าการเพิ่มขึ้นเท่ากับ 1 แล้ว
- ถ้า array[i]
- มิฉะนั้น เมื่อ array[i]> array[i-1] ไม่ใช่ศูนย์ ดังนั้น
- ถ้าการเพิ่มขึ้นเท่ากับ 1 แล้ว
- pt :=array[i-1]
- ถ้าลดลง>=2 แล้ว
- เพิ่มขึ้น :=เพิ่มขึ้น + 1
- มิฉะนั้น
- คืน -1
- ถ้าการเพิ่มขึ้นเท่ากับ 1 แล้ว
- มิฉะนั้น เมื่อ array[i] เหมือนกับ array[i-1] แล้ว
- คืน -1
- ผลตอบแทน pt
- คืน -1
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def search_element(array): increase = 1 decrease = 1 n = len(array) for i in range(1, n): if(array[i] < array[i-1]): if increase == 1: decrease = decrease + 1 else: return -1 elif(array[i] > array[i-1]): if increase == 1: pt = array[i-1] if decrease >= 2: increase = increase + 1 else: return -1 elif(array[i] == array[i-1]): return -1 if(increase >= 2 and decrease >= 2): return pt else: return -1 array = [5,4,3,4] element = search_element(array) print(element)
อินพุต
[5,4,3,4]
ผลลัพธ์
3