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

โปรแกรมค้นหาคำศัพท์ที่ถูกลบออกจากลำดับเลขคณิตใน Python


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums ที่มีเงื่อนไขลำดับเลขคณิต n-1 องค์ประกอบหนึ่งยกเว้นองค์ประกอบแรกหรือสุดท้ายของ nums ถูกลบออกก่อน เราต้องหาเบอร์ที่ลบออก

ดังนั้น หากอินพุตเป็น nums =[5, 7, 11, 13] ผลลัพธ์จะเป็น 9 เพราะรายการเป็นไปตามสูตร 2i+5 ดังนั้นสำหรับ i =2 จะเป็น 2*2 + 5 =9 ที่หายไป

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

  • ถ้าขนาดของ nums เท่ากับ 2 แล้ว

    • return floor ของ (ผลรวมขององค์ประกอบทั้งหมดที่มีอยู่ใน nums)/2

  • ถ้า nums[0] เหมือนกับ nums[1] แล้ว/p>

    • ส่งคืนหมายเลข[0]

  • ต่ำกว่า :=nums[0]

  • upper :=องค์ประกอบสุดท้ายของ nums

  • ช่วงเวลา :=ชั้นของ (บน - ล่าง) / ขนาดของ nums

  • ตัวชี้ :=ชั้นของขนาด nums / 2

  • ซ้าย :=0

  • ขวา :=ขนาดของตัวเลข - 1

  • ในขณะที่ซ้ายไม่เหมือนขวาให้ทำ

    • ถ้า nums[ตัวชี้] ไม่เหมือนกับ nums[0] + ตัวชี้ช่วงเวลา * แล้ว

      • ถ้า nums[pointer - 1] เหมือนกับ nums[0] + interval *(pointer - 1) แล้ว

        • คืนค่า nums[0] + ช่วงเวลา * ตัวชี้

      • มิฉะนั้น

        • ขวา :=ตัวชี้

        • ตัวชี้ :=ชั้นของ (ซ้าย + ขวา) / 2

    • มิฉะนั้น

      • ถ้าขวา - ซ้ายเท่ากับ 1 แล้ว

        • ตัวชี้ :=ขวา

      • มิฉะนั้น

        • ซ้าย :=ตัวชี้

        • ตัวชี้ :=ชั้นของ (ซ้าย + ขวา) / 2

ตัวอย่าง

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

def solve(nums):
   if len(nums) == 2:
      return sum(nums) // 2

   if nums[0] == nums[1]:
      return nums[0]

   lower = nums[0]
   upper = nums[-1]
   interval = (upper - lower) // len(nums)

   pointer = len(nums) // 2

   left = 0
   right = len(nums) - 1

   while left != right:
      if nums[pointer] != nums[0] + interval * pointer:
         if nums[pointer - 1] == nums[0] + interval * (pointer -1):
            return nums[0] + interval * pointer
         else:
            right = pointer
            pointer = (left + right) // 2
      else:
         if right - left == 1:
            pointer = right
         else:
            left = pointer
            pointer = (left + right) // 2

nums = [5, 7, 11, 13]
print(solve(nums))

อินพุต

[5, 7, 11, 13]

ผลลัพธ์

9