• 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的个数然后重新构造数组。
  • 相关阅读:
    Docker 基础 : 数据管理
    linux sudo 命令
    TeamCity : .NET Core 插件
    C# 文件下载之断点续传
    TeamCity : 配置 Build 过程
    TeamCity : Build 版本控制系统配置
    Git : SSH 协议服务器
    TeamCity : Build 基本配置
    C# 文件下载 : WinINet
    [翻译] TSMessages
  • 原文地址:https://www.cnblogs.com/uestcliming666/p/12848512.html
Copyright © 2020-2023  润新知