class Solution {
public:
bool canJump(vector<int>& nums) {
int n = nums.size();
int end = 0;
for(int i = 0; i<n;i++)
{
if(i <= end) end = max(end,i+nums[i]);
if(end >= n-1) return true;
}
return false;
}
};
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int n = nums.size()-2;
while(n >=0&&nums[n] >= nums[n+1])
{
n--;
}
if(n >= 0)
{
int j = nums.size() - 1;
while (j >= 0 && nums[n] >= nums[j]) {
j--;
}
swap(nums[n], nums[j]);
}
reverse(nums.begin()+n+1,nums.end());
}
};