Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Xin chào các bạn yêu quý của Learning AI With Losers! Mình là Loser1 đây!
Hôm nay là mùng 5 Tết, ngày cuối cùng của kỳ nghỉ! Trước khi quay lại guồng quay công việc và học tập, hãy cùng mình “xoay vòng may mắn” với một bài toán thú vị về mảng xoay vòng! 🚀
Bạn được cung cấp một mảng số nguyên nums
. Hãy trả về true
nếu mảng ban đầu được sắp xếp theo thứ tự không giảm, sau đó bị xoay một số lần (bao gồm cả không xoay). Ngược lại, trả về false
.
Mảng ban đầu có thể chứa các phần tử trùng lặp.
Lưu ý: Một mảng A
sau khi xoay x
vị trí sẽ trở thành mảng B
sao cho A[i] == B[(i + x) % A.length]
, trong đó %
là phép toán chia lấy dư.
Example 1:
Input: nums = [3,4,5,1,2] Output: true Explanation: [1,2,3,4,5] là mảng gốc được sắp xếp. Bạn có thể xoay mảng 3 lần để bắt đầu từ phần tử 3: [3,4,5,1,2].
Example 2:
Input: nums = [2,1,3,4] Output: false Explanation: Không có mảng nào sau khi xoay có thể tạo thành nums.
Example 3:
Input: nums = [1,2,3] Output: true Explanation: [1,2,3] là mảng gốc đã được sắp xếp. Bạn có thể xoay 0 lần (không xoay) để có nums.
Constraints:
1 <= nums.length <= 100
1 <= nums[i] <= 100
Hãy tưởng tượng bạn đang chơi trò Vòng Xoay May Mắn ngày Tết:
Ban đầu (đã sắp xếp):
1 → 2 → 3 → 4 → 5
⬆️ Tăng dần
Sau khi xoay:
3 → 4 → 5 → 1 → 2
⬇️
Xuất hiện điểm gãy!
Một mảng được xoay vòng từ mảng đã sắp xếp chỉ được có đúng một điểm gãy – giống như một dây pháo chỉ nổ một lần:
Hợp lệ:
🧨 3 → 🧨 4 → 🧨 5 → 💥 1 → 🧨 2
⬇️
Chỉ 1 điểm gãy!
Không hợp lệ:
🧨 2 → 💥 1 → 🧨 3 → 💥 4
⬇️ ⬇️
Gãy #1 Gãy #2
Một điểm gãy xuất hiện khi:
Số trước > Số sau
Ví dụ minh họa:
5 → 1 (Điểm gãy!)
⬆️ ⬇️
Lớn Nhỏ
Do mảng bị xoay vòng, cần kiểm tra cả phần tử cuối với phần tử đầu:
[3, 4, 5, 1, 2]
2 → 3 (✅ Hợp lệ)
⬆️ ⬆️
Cuối Đầu
class Solution {
public:
bool check(vector<int>& nums) {
int count = 0;
int n = nums.size();
for (int i = 0; i < n; i++) {
if (nums[i] > nums[(i + 1) % n]) {
count++;
}
if (count > 1) return false;
}
return true;
}
};
Input: [3,4,5,1,2]
Bước kiểm tra:
3 → 4 (✅)
4 → 5 (✅)
5 → 1 (❌ Điểm gãy!)
1 → 2 (✅)
2 → 3 (✅)
Kết quả: true
🎊
Input: [2,1,3,4]
Bước kiểm tra:
2 → 1 (❌ Điểm gãy #1)
1 → 3 (✅)
3 → 4 (✅)
4 → 2 (❌ Điểm gãy #2)
Kết quả: false
❌
count
và n
)(i + 1) % n
giúp kiểm tra vòng tròn.✨ Chúc các bạn một năm mới may mắn và thành công! 🎆 Đừng quên theo dõi Learning AI with Losers để tiếp tục chinh phục các thử thách Leetcode nhé! 🚀
CODE EDITOR
#leetcode #leetcodedaily #thuậtoán #lậptrình #learningwithlosers #tet2025 #mùng5tết #codingchallenge