复杂度
- 🎈1.例题一
- 🎈2.例题二
🎈1.例题一
数组
nums
包含从0到n
的所有整数,但其中缺了一个,请编写代码找出那个缺失的整数。
✅思路1:先冒泡排序,再遍历,当前值+1,不等于下一个数字。那么,当前值+1得到的数字即为缺失的整数。
✅思路2:用0与该数组中的每个数以及0~n这几个数进行异或运算,得到的结果即为缺失的数。
✅思路3:0~n等差数列公式计算和,依次减掉数组中的数据,剩下的就是消失的数字。
//思路二:
int missingNumber(int* nums, int numSize)
{
int x = 0;
for (int i = 0; i < numSize; ++i)
{
x ^= nums[i];
}
for (int i = 0; i <= numSize; ++i)
{
x ^= i;
}
return x;
}
//思路三:
int missingNumber(int* nums, int numSize)
{
int N = numSize;
int sum = ((0 + N) * (N + 1)) / 2;
for(int i = 0; i < numSize; ++i)
{
sum -= nums[i];
}
return sum;
}
🎈2.例题二
给定一个整数数组
nums
,将数组中的元素向右轮转k
个位置,其中k
是非负数。
✅思路:
void reverse(int* a, int left, int right)
{
while (left < right)
{
int temp = a[left];
a[left] = a[right];
a[right] = temp;
++left;
--right;
}
}
void rotate(int* nums, int numsSize, int k)
{
k %= numsSize;
reverse(nums, 0, numsSize - k - 1);
reverse(nums, numsSize - k, numsSize - 1);
reverse(nums, 0, numsSize - 1);
}
好啦,关于数据结构的复杂度到这里就先结束啦,后期会继续更新学习数据结构初阶的相关知识,欢迎大家持续关注、点赞和评论!❤️❤️❤️