• C day 1



    2019-04-01     11:36:16   

    *数组长度计算
    int num[] = { 15,55,26,77,56 };
    int len = sizeof(num) / sizeof(int);
        //sizeof(num)是计算整体数组的大小(以字节为单位)
        //sizeof(int)是计算一个int数据的大小(以字节为单位)
        /*
        好处:避免人工计算出错
        坏处:出错无法察觉
        */
    *数组传参
    #include "stdio.h"
    #include "stdlib.h"
    
    int twosum(int num[]) {
        int i, j;
        i = sizeof(num);
        j = sizeof(int);
        int len = sizeof(num) / sizeof(int);
        printf("num 的大小:%d
    ", i);
        printf("一个int 的大小:%d
    ", j);
        printf("数组的长度:%d
    ", len);
        return len;
    }
    int main() {
        int target = 9;
        int num[] = { 15,55,26,77,56 };
        twosum(num);
        printf("-------------
    ");
        int i, j;
        i = sizeof(num);
        j = sizeof(int);
        int len = sizeof(num) / sizeof(int);
        printf("num 的大小:%d
    ", i);
        printf("一个int 的大小:%d
    ", j);
        printf("数组的长度:%d
    ", len);
        system("pause");
        return 0;
    }

    结果:

    出错原因:数组传递的是首地址地址,但是参数到了函数内就成了普通地址,不再是首地址。所以sizeof计算的是指针的大小。

    *leetcode 

    Given an array of integers, return indices of the two numbers such that they add up to a specific target.

    You may assume that each input would have exactly one solution, and you may not use the same element twice.

    Example:

    Given nums = [2, 7, 11, 15], target = 9,
    
    Because nums[0] + nums[1] = 2 + 7 = 9,
    return [0, 1].

    int* twoSum(int* nums, int numsSize, int target) {
        int *a = (int*)malloc(2 * sizeof(int));//之前没有想到,
        int sum = 0;//前面的 (int *)是强制转换,后面的malloc(sizeof(int)); 是在内存中创建一个连续长度为2*sizeof(int)的区间之后再返回该区间的首地址给int * a
        for (int i = 0; i < numsSize - 1; i++)
        {
            for (int j = i + 1; j < numsSize; j++) {
                sum = nums[i] + nums[j];
                if (sum == target)
                {
                    a[0] = i;
                    a[1] = j;
                }
            }
        }
        return a;
    }

    常规解法就是穷举,所有数相加,然后进行判断。

     
  • 相关阅读:
    NLP 中的embedding layer
    Java Web -- Servlet(5) 开发Servlet的三种方法、配置Servlet具体解释、Servlet的生命周期(2)
    我对REST的理解
    QML 与 C++ 交互之工厂方法
    Hive分析窗体函数之LAG,LEAD,FIRST_VALUE和LAST_VALUE
    【C/C++】:用C实现输出日期的阴历日子
    Android6.0执行时权限解析,RxPermissions的使用,自己封装一套权限框架
    统计报表
    2015 HDU 多校联赛 5363 Key Set
    查看sedna创建的数据库和集合,文档之类
  • 原文地址:https://www.cnblogs.com/sece/p/10635481.html
Copyright © 2020-2023  润新知