1.判断一个数列是否是单调的
分别编写两个函数,一个判断是否单调递增,一个判断是否单调递减。
bool Inc_Nums(int* nums, int n)
{
bool res = true;
for (int i = 0; i < n-1; ++i)
{
if (nums[i] > nums[i + 1])
{
res = false;
break;
}
}
return false;
}
bool Dec_Nums(int* nums, int n)
{
bool res = true;
for (int i = 0; i < n - 1; ++i)
{
if (nums[i] < nums[i + 1])
{
res = false;
break;
}
}
return false;
}
bool Monotoni(int* nums, int n)
{
assert(nums != NULL);
return Inc_Nums(nums, 0) || Dec_Nums(nums, 0);
}
2.在数组中查找重复数字,给定一个数组nums,数组大小为n+1,数组中的数字都在n到1之间,已知存在一个重复的整数,找到这个数。
int FindDuplicate(int* nums, int size)
{
assert(nums != NULL);
int n = size - 1;
int total = n * (n + 1) / 2;
int sum = 0;
for (int i = 0; i < size; ++i)
{
sum = sum + nums[i];
}
return sum - total;
}