Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบอาร์เรย์ว่าถูกจัดเรียงและหมุนใน Python . หรือไม่


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums เราต้องตรวจสอบว่าอาร์เรย์ถูกจัดเรียงในลำดับที่ไม่ลดลงหรือไม่ จากนั้นจึงหมุนจำนวนตำแหน่งบางส่วน (อาจเป็นศูนย์) หรือไม่ อาจมีข้อมูลซ้ำกันในอาร์เรย์

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[12,15,2,5,6,9] เอาต์พุตจะเป็น True เพราะจะหมุนไปทางขวาสำหรับสองตำแหน่ง

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • เจ :=0

  • ในขณะที่ j <ขนาดของ nums - 1 และ nums[j] <=nums[j + 1] ให้ทำ

    • เจ :=เจ + 1

  • res :=(ส่วนย่อยของ nums จากดัชนี j + 1 ถึงจุดสิ้นสุดของ nums) ต่อ (subbarray ของ nums จากดัชนี 0 ถึง j ของ nums)

  • สำหรับฉันในช่วง 0 ถึงขนาดความละเอียด - 1 ทำ

    • ถ้า res[i]> res[i + 1] แล้ว

      • คืนค่าเท็จ

  • คืนค่า True

ตัวอย่าง (Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(nums):
   j = 0
   while (j < len(nums) - 1 and nums[j] <= nums[j + 1]):
      j += 1
   res = nums[j + 1 : len(nums)] + nums[0:j + 1]
   for i in range(len(res) - 1):
      if res[i] > res[i + 1]:
         return False
   return True

nums = [12,15,2,5,6,9]
print(solve(nums))

อินพุต

[12,15,2,5,6,9]

ผลลัพธ์

True