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的个数然后重新构造数组。
原文地址:https://www.cnblogs.com/uestcliming666/p/12848512.html