สมมติว่าเรามีอาร์เรย์ที่เรียกว่า 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]
- ถ้า |nums[i]|>=x และ |nums[i]| <=y แล้ว
- cnt :=0
- สำหรับฉันในช่วง 0 ถึง temp_range ให้ทำ
- ถ้า i>=ขนาดของ nums แล้ว
- ออกมาจากลูป
- ถ้า nums[i]> 0 แล้ว
- คืนค่าเท็จ
- มิฉะนั้น
- cnt :=cnt + 1
- ถ้า i>=ขนาดของ nums แล้ว
- ถ้า 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