Coding everyday. ^_^

1. Two Sum

  • 重点知识:指针可以存储数值,通过 malloc 新建数组
  • int* returnSize:Size of the return array. Store the value in a pointer, say 2.
    *returnSize = 2
  • My solution:
  • /**
    * Note: The returned array must be malloced, assume caller calls free().
    */
    int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    *returnSize = 2;
    int* returnArray = malloc(sizeof(int)*(*returnSize));
    for (int i = 0; i < numsSize-1; i++) {
    for (int j = i+1; j < numsSize; j++) {
    if (nums[i] + nums[j] == target) {
    returnArray[0] = i;
    returnArray[1] = j;
    return returnArray;
    }
    }
    }
    returnArray[0] = -1;
    returnArray[1] = -1;
    return returnArray;
    }

2. Add Two Numbers

  • 重点知识:不能通过数字来计算,考虑进位,考虑链表遍历和插入节点,通过 malloc 新建节点
  • Don't use integer to calculate in this problem since the numbers are very long.
  • Need to consider carry bit.
  • This linked list's head is the first node.
  • My solution:
  • /**
    * Definition for singly-linked list.
    * struct ListNode {
    * int val;
    * struct ListNode *next;
    * };
    */ struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
    struct ListNode* p1;
    struct ListNode* p2;
    struct ListNode* l3 = NULL;
    struct ListNode* p3 = NULL;
    p1 = l1;
    p2 = l2; int carry_bit = 0;
    while (p1 != NULL || p2 != NULL || carry_bit == 1) {
    int num1;
    int num2;
    int num3;
    if (p1 == NULL && p2 == NULL && carry_bit == 1) {
    num3 = 1;
    carry_bit = 0;
    }
    else {
    if (p1 == NULL) {
    num1 = 0;
    }
    else {
    num1 = p1->val;
    p1 = p1->next;
    }
    if (p2 == NULL) {
    num2 = 0;
    }
    else {
    num2 = p2->val;
    p2 = p2->next;
    } num3 = num1 + num2 + carry_bit;
    if (num3 >= 10) {
    carry_bit = 1;
    num3 = num3 - 10;
    }
    else {
    carry_bit = 0;
    }
    } struct ListNode* tmp;
    tmp = malloc(sizeof(struct ListNode));
    if (tmp == NULL) {
    fprintf(stderr, "Out of memory.\n");
    exit(1);
    }
    tmp->val = num3;
    tmp->next = NULL; if (p3 == NULL) {
    p3 = tmp;
    l3 = p3;
    }
    else {
    p3->next = tmp;
    p3 = p3->next;
    }
    } return l3;
    }

3. Longest Substring Without Repeating Characters

  • 重点知识:多层遍历,时间复杂度过高
  • My solution:
  • int lengthOfLongestSubstring(char * s){
    int length = strlen(s);
    if (length == 1){
    return 1;
    }
    int max = 0;
    for (int i = 0; i < length; i++) {
    int flag = 1;
    for (int j = i + 1; j < length & flag; j++) {
    for (int k = j - 1; k >= i; k--) {
    if (s[j] == s[k]) {
    int tmp = j - i;
    if (max < tmp) {
    max = tmp;
    }
    i = k;
    flag = 0;
    break;
    }
    if (k == i) {
    int tmp = j - i + 1;
    if (max < tmp) {
    max = tmp;
    }
    }
    }
    }
    }
    return max;
    }

最新文章

  1. 博客迁移至CSDN
  2. SQL入门经典(七) 之脚本和批处理
  3. Android课程---qq登陆页面(练习)
  4. Oralce开窗函数OVER()的一些应用
  5. FbinstTool万能启动超级简单教程
  6. linux 打补丁 2原理
  7. apache的FileUtils方法大全
  8. [LeetCode OJ] Single Number之二 ——Given an array of integers, every element appears THREE times except for one. Find that single one.
  9. NEC红外遥控协议理解与实现
  10. POI读入excel文件到Java中
  11. JAVA Struts2 搭建
  12. Android WebKit 内核
  13. BootStrap 学习笔记一
  14. Visual Studio For MacOS 踩坑记(二)
  15. Django 2.0.3 使用笔记
  16. 浅析alsa声卡驱动snd_interval结构体openmin,openmax和integer含义
  17. holiday
  18. Android的环境搭建
  19. 构建配置 Enable multidex
  20. Nginx(六)-- 配置文件之Gzip

热门文章

  1. iptables常用命令二之如何删除nat规则
  2. 学习Spring-Data-Jpa(五)---可嵌入对象和元素集合的使用
  3. TFRecord 使用
  4. cometoj---contest#3 棋盘
  5. 64位内核开发第十二讲,进程监视,ring3跟ring0事件同步.
  6. MAC OS 中mount nfs 报错问题.
  7. WSL2(Ubuntu)安装Docker
  8. ZR#1015
  9. linux设置定时任务的方法步骤
  10. 优雅地使用eruda在移动端上调试网页