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

ตรวจสอบว่าอาร์เรย์มีองค์ประกอบทั้งหมดของช่วงที่กำหนดใน Python . หรือไม่


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums นอกจากนี้เรายังมีตัวเลขสองตัว x และ y ที่กำหนดช่วง [x, y] เราต้องตรวจสอบว่าอาร์เรย์มีองค์ประกอบทั้งหมดในช่วงที่กำหนดหรือไม่

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[5,8,9,6,3,2,4] x =2 y =6 ผลลัพธ์จะเป็นจริงเนื่องจากมีองค์ประกอบทั้งหมด [2,3,4,5 ,6].

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

  • temp_range :=y - x
  • สำหรับ i ในช่วง 0 ถึงขนาดของ nums ให้ทำ
    • ถ้า |nums[i]|>=x และ |nums[i]| <=y แล้ว
      • z :=|nums[i]| - x
      • ถ้า nums[z]> 0 แล้ว
        • nums[z] :=-nums[z]
  • cnt :=0
  • สำหรับฉันในช่วง 0 ถึง temp_range ให้ทำ
    • ถ้า i>=ขนาดของ nums แล้ว
      • ออกมาจากลูป
    • ถ้า nums[i]> 0 แล้ว
      • คืนค่าเท็จ
    • มิฉะนั้น
      • cnt :=cnt + 1
  • ถ้า cnt ไม่เหมือนกับ (temp_range + 1) แล้ว
    • คืนค่าเท็จ
  • คืนค่า True

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

ตัวอย่าง

def solve(nums, x, y) :
   temp_range = y - x
   for i in range(0, len(nums)):
      if abs(nums[i]) >= x and abs(nums[i]) <= y:
         z = abs(nums[i]) - x
         if (nums[z] > 0) :
            nums[z] = nums[z] * -1
   cnt = 0
   for i in range(0, temp_range + 1):
      if i >= len(nums):
         break
      if nums[i] > 0:
         return False
      else:
         cnt += 1
   if cnt != temp_range + 1:
      return False
   return True
nums = [5,8,9,6,3,2,4]
x = 2
y = 6
print(solve(nums, x, y))

อินพุต

[5,8,9,6,3,2,4], 2, 6

ผลลัพธ์

True