• Day 1


    第一题:

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

    (来源:力扣(LeetCode))

    1、一开始也只能想到这种双循环求解的方法,一开始写出来的代码没有截图。

      对指针开辟空间的语法不记得,后改正:int *result = (int *)malloc(sizeof(int)*2);

      题目要求方法最后返回数组下标,之前不知道怎么返回多个数组下标,在参考了几个题解之后,发现可以船舰一个新的数组(result)来接收所求得的数组下标,最终返回该数组。

       

      系统提供的数组参数是{2,7,11,15},target=9;

      运行上面的代码可以得出预期结果;

    2、Java中有Map<k,v>集合可存储键值对,键值对则正好对应了数组里面的数据和下标;

      先创建一个HashMap集合,泛型都为Integer;

      for循环,查看HashMap集合其中是否有和数组数据相同的键,若没有,则将(target-数组数据)和下标分别存入集合中;

      如果发现有键于数组数据相同,则将键对应的值和数组下标存入index数组中,将其返回;

            

    第二题:

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位数字。

    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

    您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    (来源:力扣(LeetCode))

     1、定义链表元素:struct ListNode *p,*q;

      为链表元素分配内存空间:struct ListNode *r=(struct ListNode*)malloc(sizeof(struct ListNode));

      (15行)因为struct ListNode结构体内定义了next指针,所以当为指针分配了空间后需要将该指针的next指向NULL;

      

      用x,y来接收当前p,q指针所指向的数,用num接收x和y相加的值;

      由于两个非负数相加可能超过十,所以使用flag接收num/10作为进位的标志;

      再为r->next分配内存空间使r->val=num%10;

      当p,q指向的位置运算结束后,p和q都指向其next;

      最终循环结束,再次判断flag是否为0,不是则最高位有进位,需再为r->next分配空间是r->next->val=1;

      返回结果。

  • 相关阅读:
    [LeetCode] 909. Snakes and Ladders 蛇梯棋
    [LeetCode] 857. Minimum Cost to Hire K Workers 雇佣K名工人的最低成本
    [LeetCode] 908. Smallest Range I 最小区间
    [LeetCode] 862. Shortest Subarray with Sum at Least K 和至少为K的最短子数组
    [LeetCode] 907. Sum of Subarray Minimums 子数组最小值之和
    [LeetCode] 864. Shortest Path to Get All Keys 获得所有钥匙的最短路径
    [LeetCode] 906. Super Palindromes 超级回文数
    [LeetCode] 871. Minimum Number of Refueling Stops 最少的加油站个数
    [LeetCode] 905. Sort Array By Parity 按奇偶排序数组
    [LeetCode] 1028. Recover a Tree From Preorder Traversal 从先序遍历还原二叉树
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13109500.html
Copyright © 2020-2023  润新知