একটি নম্বর লিস্ট nums দেওয়া আছে। প্রতিটি কনsekutিভ ইভেন ইনডেক্স পেয়ার (০,২), (৪,৬)... এবং আড ইনডেক্স পেয়ার (১,৩), (৫,৭)... কে আদলবদল করুন।
ইনপুট উদাহরণ
nums = [8,5,3,4,8,9,3,6,4,7]
আউটপুট: [3, 4, 8, 5, 3, 6, 8, 9, 4, 7]
অ্যালগরিদম
- স্টেপ ৪ দিয়ে লুপ চালান (
i = 0, 4, 8...)। i+2 < lenহলেnums[i]এবংnums[i+2]স্ব্যাপ (ইভেন পেয়ার)।i+3 < lenহলেnums[i+1]এবংnums[i+3]স্ব্যাপ (আড পেয়ার)।
পাইথন কোড
def solve(nums):
for i in range(0, len(nums) - 2, 4):
if i + 2 < len(nums):
nums[i], nums[i + 2] = nums[i + 2], nums[i]
if i + 3 < len(nums):
nums[i + 1], nums[i + 3] = nums[i + 3], nums[i + 1]
return nums
# টেস্ট
print(solve([8,5,3,4,8,9,3,6,4,7])) # [3, 4, 8, 5, 3, 6, 8, 9, 4, 7]
ব্যাখ্যা
ব্লক সাইজ ৪ ধরে ইভেন ও আড ইনডেক্স আলাদা আলাদা রোটেট করা হয়েছে। ইন-প্লেস অপারেশন, সময় O(n), স্পেস O(1)।