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