Lập Trình Viên Số Khổ
Senior Member
https://leetcode.com/problems/find-original-array-from-doubled-array/ 10^5 màbài này n có 10^3 à
https://leetcode.com/problems/find-original-array-from-doubled-array/ 10^5 màbài này n có 10^3 à
toy edit ròi đấy, thím brinbt đưa bài hard dạng recover array tương tự. Thay vì double mỗi value trong array ban đầu như bài hôm nay thì bài hard này nó thêm a[.i]-k và a[.i]+k với k nguyên dương bất kì
à thảo nào cứ thấy có "k" gì ko bikbài hard thím brinbt đưa n có 10^3 à còn bài hôm nay medium thì 10^5

lỡ 1 phần tử nó lập nhiều lần thì xao nên toy mới xài cái mapcái num max là 2000 phần tử, nên chỉ cần array<bool, 2001> là đủ, khỏi phải cấp phát động sau mỗi lần tìm k. Rồi dùng binary search thôi, do cái nums t đã sort rồi.![]()
vậy mới cần xử lý khéo léo. Vd lần đầu search ra num[i ] + 2*k tại x. thì lần tiếp theo sẽ chỉ search num[i+1]+2*k trong khoảng [x+1,nums.end()) thôi,lỡ 1 phần tử nó lập nhiều lần thì xao nên toy mới xài cái map![]()
optimize code lại bỏ bớt mấy chỗ cấp phát động ko cần thiết cũng xuống được ~90ms ròi![]()

dỏm kute chêvậy mới cần xử lý khéo léo. Vd lần đầu search ra num + 2*k tại x. thì lần tiếp theo sẽ chỉ search num[i+1]+2*k trong khoảng [x+1,nums.end()] thôi,![]()
vấn đề k nằm ở cái logN. Mà làm ntn k phải cấp phát động nhiều lần cho cái map/unordered_map + cache friendly nữa.dỏm kute chên ~chỉ cỡ 1k mà optimize cái tìm kiếm logn làm gì![]()
![]()

sửa lại trong cái flat map kia của toy cũng dễ, thêm cái offset hint là được mà giờ submit nó toàn 120ms, nãy ăn hên được 87msvấn đề k nằm ở cái logN. Mà làm ntn k phải cấp phát động nhiều lần cho cái map/unordered_map + cache friendly nữa.![]()
đc khoảng đó là hit the wall rồi. lâu lâu ăn hên thì đc cao, t ăn hên có 55 ms đây,sửa lại trong cái flat map kia của toy cũng dễ, thêm cái offset hint là được mà giờ submit nó toàn 120ms, nãy ăn hên được 87ms![]()
.
CustomIntQueue bằng std::queue<int> cũng được


.
unordered_map thành mảng 2 chiều thì ok
Bài này làm O(m*m) làm python dùng @cache là dính TLE liền, đổi qua C++ dùng mảng 2 chiều thay cho cái @cache thì mới pass. Trên python chắc phải đổi qua dùng mảng 2 chiều trong numpy mới pass đc,qhd mà medium gì ko biết![]()
đệ quy memoize TLE nghỉ chơi![]()
https://leetcode.com/submissions/detail/800916001/![]()
đổi cái cache từunordered_mapthành mảng 2 chiều thì okhttps://leetcode.com/submissions/detail/800918725/![]()

python có cho chỉnh kiểu của @cache koBài này làm O(m*m) làm python dùng @cache là dính TLE liền, đổi qua C++ dùng mảng 2 chiều thay cho cái @cache thì mới pass. Trên python chắc phải đổi qua dùng mảng 2 chiều trong numpy mới pass đc,![]()
t thấy nó có input là user_function đó. Test thử xem thím kân,python có cho chỉnh kiểu của @cache ko![]()

t thấy nó có input là user_function đó. Test thử xem thím kân,
https://docs.python.org/3/library/functools.html
có đổi kiểu của cache được đâu, mặc định là dict ròiSince a dictionary is used to cache results, the positional and keyword arguments to the function must be hashable.
Tự viết cái cache thì chắc đc.có đổi kiểu của cache được đâu, mặc định là dict ròi![]()
