สมมติว่าเรามีอาร์เรย์ที่เรียกว่า 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