数组中重复数字时间复杂度O(N),空间复杂度O(1)【C++】

雨点打透心脏的1/2处 2022-05-08 06:54 413阅读 0赞

在这里插入图片描述
在这里插入图片描述

  1. #include <iostream>
  2. bool duplicate(int numbers[], int length, int * duplication){
  3. if(numbers == nullptr || length <= 0){
  4. return false;
  5. }
  6. for(int i = 0;i < length;i ++){
  7. if(numbers[i] < 0 || numbers[i] > length - 1)
  8. return false;
  9. }
  10. for(int i = 0;i < length;i ++){
  11. while(numbers[i] != i){
  12. if(numbers[i] == numbers[numbers[i]]){
  13. * duplication = numbers[i];
  14. return true;
  15. }
  16. int temp = numbers[i];
  17. numbers[i] = numbers[temp];
  18. numbers[temp] = temp;
  19. }
  20. }
  21. return false;
  22. }
  23. int main(int argc, const char * argv[]) {
  24. int numbers[] = {3, 1, 2, 0, 2, 5, 3};
  25. int dup;
  26. if(duplicate(numbers, 7, & dup)){
  27. std::cout << dup << std::endl;
  28. }
  29. }

发表评论

表情:
评论列表 (有 0 条评论,413人围观)

还没有评论,来说两句吧...

相关阅读

    相关 时间复杂_空间复杂

    时间复杂度\_空间复杂度 主要说明以下3点: 1.算法效率 2.时间复杂度 3.空间复杂度 一、算法效率 算法效率分析分为两种:第一种是时间效率,第二种

    相关 时间复杂空间复杂

    算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间复杂度 (1)时间频度  一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可

    相关 时间复杂空间复杂

    一、为什么要研究时间和空间复杂度     假设计算机是无限快的并且计算机存储器是免费的的,你还有什么理由来研究算法吗?即使只是因为你还想证明你的解法会终止并以正确的答案终