zoukankan      html  css  js  c++  java
  • LeetCode做题笔记(6)——函数中不能用sizeof( 数组指针形参 )计算数组大小!

    本篇文章总结了LeetCode 75题的解题过程中遇到的问题,主要包括:函数内使用sizeof( 数组指针形参 )来计算数组大小错误的问题、

    75. 颜色分类(荷兰国旗问题)

    题目类型

    排序

    做题总结

    1. 使用插入排序时遇到的问题。
      void InsertSort( int *a, int n )
      {
       int n = sizeof(a) / sizeof(int);
       int p, i, tmp;
       for( p = 1; p < n; ++p )
       {
           tmp = a[p];
           for( i = p; i > 0 && a[i - 1] > tmp; --i )
           {
               a[i] = a[i - 1];
           }
           a[i] = tmp;
       }
      }
      注意这里用到的int n = sizeof(a) / sizeof(int);,这样使用时,无法得到正确的数组大小,可能是因为在数组名a传递给函数后,函数只将其认为是一个普通指针,并不知道其是否是一个数组或数组有多少个元素;在如下使用方式下,才能够得到数组的正确大小:
      int main()
      {
       int nums[] = { 1, 3, 2, 4, 5 };
       int n = sizeof(nums) / sizeof(int);
      }
    2. 本题使用的三指针法其逻辑不容易理解,需要仔细考虑多种情况
    3. 本题也可以使用排序的方法,也可以用官方提示的数0、1、2的个数然后重新构造数组。
  • 相关阅读:
    Unix IPC之共享内存区(1)
    linux下的二进制文件的编辑和查看
    Posix 信号量
    Unix IPC之Posix信号量实现生产者消费者
    整型信号量与记录型信号量
    C++之友元
    C++之异常处理
    C++之STL(标准模板库)
    C++之继承
    C++之封装
  • 原文地址:https://www.cnblogs.com/uestcliming666/p/12848512.html
Copyright © 2011-2022 走看看