สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums ซึ่งมีองค์ประกอบเฉพาะ เราต้องตรวจสอบว่าอาร์เรย์จะถูกจัดเรียงหรือไม่หลังจากย้อนกลับหนึ่งอาร์เรย์ย่อยของอาร์เรย์นั้น หากจัดเรียงอาร์เรย์แล้ว ให้คืนค่า true ด้วย
ดังนั้นหากอินพุตมีค่าเท่ากับ nums =[4,6,27,25,15,9,37,42] ผลลัพธ์จะเป็น True เพราะหากเราย้อนกลับ [9,15,25,27] แสดงว่าอาร์เรย์ จะถูกจัดเรียง
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- n :=ขนาดของ nums
- หากอาร์เรย์มีองค์ประกอบเพียงตัวเดียว ให้คืนค่า True
- ผม :=1
- สำหรับฉันในช่วง 1 ถึง n - 1 ทำ
- ถ้า nums[i - 1]
- ถ้าฉันเหมือนกับ n ให้คืนค่า จริง ไม่เช่นนั้นให้ออกจากลูป
- ถ้า nums[i - 1]
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
โค้ดตัวอย่าง
def solve(nums): n = len(nums) if n == 1: return True i = 1 for i in range(1, n): if nums[i - 1] < nums[i] : if i == n: return True else: break j = i while j < n and nums[j] < nums[j - 1]: if i > 1 and nums[j] < nums[i - 2]: return False j += 1 if j == n: return True k = j if nums[k] < nums[i - 1]: return False while k > 1 and k < n: if nums[k] < nums[k - 1]: return False k += 1 return True nums = [4,6,27,25,15,9,37,42] print(solve(nums))
อินพุต
[4,6,27,25,15,9,37,42]
ผลลัพธ์
True