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