Giả sử chúng ta có một số mảng và được sắp xếp theo thứ tự không giảm. Chúng ta phải tạo một mảng được gọi là kết quả có cùng độ dài với nums sao cho kết quả [i] là tổng của sự khác biệt tuyệt đối giữa nums [i] và tất cả các phần tử khác trong mảng.
Vì vậy, nếu đầu vào là nums =[5,7,12], thì đầu ra sẽ là [9, 7, 12] vì
- | 5-5 | + | 5-7 | + | 5-12 | =0 + 2 + 7 =9
- | 7-5 | + | 7-7 | + | 7-12 | =2 + 0 + 5 =7
- | 5-12 | + | 7-12 | + | 12-12 | =7 + 5 + 0 =12
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- res:=một danh sách mới
- s:=0
- n:=kích thước của nums
- đối với tôi trong phạm vi từ 1 đến n - 1, thực hiện
- s:=s + nums [i] - nums [0]
- chèn s vào cuối res
- đối với tôi trong phạm vi từ 1 đến n - 1, thực hiện
- diff:=nums [i] - nums [i-1]
- s:=s + diff * i
- s:=s - diff * (n-i)
- chèn s vào cuối res
- trả lại res
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(nums): res = [] s=0 n = len(nums) for i in range(1,n): s+=nums[i]-nums[0] res.append(s) for i in range(1,n): diff = nums[i]-nums[i-1] s += diff*i s -= diff *(n-i) res.append(s) return res nums = [5,7,12] print(solve(nums))
Đầu vào
[5,7,12]
Đầu ra
[9, 7, 12]