30/6/2022:
View attachment 1238418
- 1 câu medium hay
- do hôm qua thức khuyêa nên sáng nay đầu loạn vl
- Nghĩ 30p ms ra cái solution dùng prefix sum mạc dù time vẫn là O(nlogn) nhưng khá ngáo, nên cách này khỏi nói luôn
- Code solution 1: https://leetcode.com/submissions/detail/734675197/
- Đọc discuss thì thấy cách này ms chuẩn:
- Ví dụ ta có 2 số 6 và 9 để chuyển 2 số này theo yêu cầu thành 2 số giống nhau thì chọn bất kì số giống nhau đó từ 6->9 đều đc
- [6, 9] -> [7, 7] thì số lần chuyển sẽ là (7 - 6) + (9 - 7) = 3
- [6, 9] - [9, 9] thì số lần chuyển là (9 - 6) + (9 - 9) = 3
- ...
- Để chứng minh thì tưởng tưởng 6 là điểm A, 9 là điểm B;
- Chọn 1 điểm C bất kì trên AB giống như việc chọn 1 số trong khoảng [6, 9]
- d1 + d2 = AB sẽ ko đổi -> đã cm
- nếu chọn điểm C ngoài khoảng AB thì tổng AC + CB > AB giống như việc chọn 1 số ngoài khoảng [6, 9]
- Như vậy sau khi sort thì giả sử đc mảng [1, 3, 7, 11, 12]
- xét số 1 và số 12 thì chọn 1 số trong khoảng 1 -> 12
- Khi bỏ 2 số 1 và 12 thì đc mảng [3, 7, 11] -> và lại chọn số có khoảng 3->7 nhỏ hơn khoảng trc
- cứ làm như vậy sẽ ra số cần chọn là nums[n / 2]
- Nguồn: https://leetcode.com/problems/minim...scuss/94932/Why-median-is-better-than-average
- Code: https://leetcode.com/submissions/detail/734675989/
Theo cái link của thím thì thấy 1 cách giải thích có vẻ dễ hiểu hơn, tôi đang thẩm
I have a simpler proof. The meet point must be somewhere between current min and max. No matter which point you pick, the total running length for min and max is the same, i.e. abs(min_point-meet_point)+abs(max_point-meet_point) = SOME_CONSTANT.
So, we can effectively reduce the problem size from n to n-2 by discarding min and max points. Do you see it? That is the definition of median, isn't it?
Let's have an example. suppose we have an array, [1,2,3,4,5,6,7]. The meet point must lie between 1 and 7. For any value in this range, the total running length for 1 and 7 is the same. So, array => [2,3,4,5,6]...
I hope it can help people who don't want to read some long proofs.