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;
    }

【436】Solution for LeetCode Problems的更多相关文章

  1. about家庭智能设备部分硬件模块功能共享【协同工作】solution

    本人设备列表: Onda tablet {Android} wifi Desktop computer {win7.centos7} 外接蓝牙adapter PS interface 键盘.鼠标{与同 ...

  2. 【NOIP2012TG】solution

    D1T1(Vigenere) 题意:给你一个原串与一个密码串,问你按照题意规则加密后的密文. 解题思路:暴力模拟. #include <stdio.h> ],c[],u1[],u2[]; ...

  3. 【NOIP2014TG】solution

    链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83|31 D1T1(rps) 题意:给你一个周期,以及胜 ...

  4. 【NOIP2016TG】solution

    传送门:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%7C33 D1T1(toys) 题意:有n个小人, ...

  5. 【NOIP2015TG】solution

    链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%2C32 D1T1(magic) 题意:看题目.. ...

  6. 【NOIP2013TG】solution

    链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%2C30 D1T1:转圈游戏(circle) 题意: ...

  7. 【NOIP2011TG】solution

    老师最近叫我把NOIPTG的题目给刷掉,于是就开始刷吧= = 链接:https://www.luogu.org/problem/lists?name=&orderitem=pid&ta ...

  8. 【AtCoder】AGC005F - Many Easy Problems

    题解 我们把一个点的贡献转化为一条边的贡献,因为边的数量是点的数量-1,最后再加上选点方案数\(\binom{n}{k}\)即可 一条边的贡献是\(\binom{n}{k} - \binom{a}{k ...

  9. 【C++】关键字回忆leetcode题解

    20200515 前缀和 no.560 20200518 动态规划 no.152 20200520 状态压缩 no.1371 20200521 中心扩散 no.5 20200523 滑动窗口 no.7 ...

随机推荐

  1. Union-Find(并查集): Quick find算法

    解决dynamic connectivity的一种算法:Quick find Quick find--Data sturcture 如果两个objects是相连的,则它们有相同的array value ...

  2. django后台管理

    后台管理 1)  本地化 语言和时区的本地化. 修改settings.py文件. # LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' # TIME_ ...

  3. Linux 的磁盘格式化、挂载、磁盘检验、df、du、fdisk、free命令的使用

    df:列出文件系统的整体磁盘使用量du:检查磁盘空间使用量fdisk:用于磁盘分区 free:查看内存占用情况 一.df命令列出系统的整体磁盘使用量 df命令参数功能:检查文件系统的磁盘空间占用情况. ...

  4. [C++]线程池 与 [Go] mapreduce

    线程池 ref: https://github.com/progschj/ThreadPool/blob/master/ThreadPool.h ref: https://www.jianshu.co ...

  5. CF1097D 【Makoto and a Blackboard】

    我们考虑对于一个\(N\),他如果变成了他的约数\(x\),那又会变成一个子问题 我们定义\(F(n, k)\)为n操作k次的期望个数 那么我们有\(F(n, k) =\sum_{x|n} F(x, ...

  6. [java][JEECG] Maven settings.xml JEECG项目初始化 RouYi settings.xml配置

    好吧一下是经验之谈,原本这些坑不应该躺的,从头看手册完全可以避免这些. 懒得整理了,看懂了就看,看不懂自己琢磨JEECG的帮助文档去,不过嘛我喜欢用Intelij IDEA,他里面都是别的IDE,不喜 ...

  7. ZwQuerySystemInfoMation函数使用

    ZwQueryInfoMation函数很简单.就是4个参数. NTSTATUS WINAPI ZwQuerySystemInformation( _In_ SYSTEM_INFORMATION_CLA ...

  8. 利用nc当作备用shell管理方案.

    ssh 有时候真的就是连不上了,然后是没什么然后了呢. 或者手残改错配置然后重新sshd了. 所以这时候需要备用的远程管理工具.nc是最好的选择,一般服务器都是 内网的,如果跳板机也管理不了呢. 安装 ...

  9. Oracle误删除数据恢复。Oracle删除后恢复数据

    发现误删除时需要及时处理,速度要快,姿势要帅.晚了就恢复不了额 1.查询时间 以确保恢复到某个时间点 select SQL_TEXT, LAST_ACTIVE_TIME from v$sqlarea ...

  10. Java 获取客户端真实IP地址

    本文基于方法 HttpServletRequest.getHeader 和 HttpServletRequest.getRemoteAddr 介绍如何在服务器端获取客户端真实IP地址. 业务背景 服务 ...