Я абсолютно не могу понять , почему почти два идентичных кода, но в первом из них выдает ошибку double free or corruption (out): 0x00000000020f6e70 ***, а во втором нет (написано на С++)
1 код:
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int n = nums.size();
int i = n - 1;
while(i > 0 && nums[i] < nums[i - 1]){
i--;
}
if(i == 0){
reverse(nums.begin(), nums.end());
return;
}
--i;
int j = n - 1;
while(j >= 0 && nums[j] <= nums[i]){
--j;
}
swap(nums[i], nums[j]);
reverse(nums.begin() + i + 1, nums.end());
}
};
2 код:
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int n = nums.size();
int i = n - 2;
while (i >= 0 && nums[i + 1] <= nums[i]) {
i--;
}
if(i == -1){
for(int i = 0; i < (int)(n / 2) ; ++i){
swap(nums[i], nums[n - 1 - i]);
}
return;
}
int j = n - 1;
while(j >= 0 && nums[j] <= nums[i]){
--j;
}
swap(nums[i], nums[j]);
reverse(nums.begin() + i + 1, nums.end());
}
};
В чем разница? Объясните, пожалуйста
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
цикл должен выполняться до 8, включительно, но выполняется лишь до 6Суть задачи не важна, так как она сделана, важен сам процесс автоматизации
В чем здесь проблема? Почему n всегда равно либо 100 и 100, либо 200 и 200, как ни крути
Как мне сделать так, чтобы размер матрицы и значение её элементов я вводил сам (то есть динамически)?