1、计算1-6个数的排列

输入n(1<=n<=4)
输出
从1到6中选n个数,能组成多少个n位数,且数中没有重复数字

  1. #include <iostream>
  2. using namespace std;
  3. // 阶乘存储
  4. int fact[] = {1,1,2,6,24,120,720};
  5. int main(){
  6. int n = 0;
  7. cin >> n;
  8. cout << fact[6] / fact[6 - n] << endl;// 排列公式
  9. return 0;
  10. }

2、删除数组重复元素(要求常数空间复杂度)

输入:以空格间隔的整数升序数组
输出:无重复的数组
要求常数空间复杂度

  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int main(){
  5. vector<int> nums;
  6. int n = 0;
  7. while (cin >> n) {
  8. nums.push_back(n);
  9. }
  10. int k = 0; // 记录有效的位置
  11. for (int i = 1; i < nums.size(); ++i) {
  12. if (nums[i] == nums[k]) {
  13. continue;
  14. } else{
  15. k++;
  16. nums[k] = nums[i];
  17. }
  18. }
  19. for (int i = 0; i <= k; ++i) {
  20. if (i > 0) {
  21. cout << " ";
  22. }
  23. cout << nums[i];
  24. }
  25. return 0;
  26. }