zoukankan      html  css  js  c++  java
  • LeetCode Two-Sum

    Questions:Two-Sum

    My Answer:

    /*
        Function: Copynums
        Explanation:
            The function is used to judging whether a number is in nums or not.
     */
    int* copynums(int* nums, int numsSize, int maxn, int minn)
    {
        int i;
        
        int* cpnums;
        
        cpnums = (int*)malloc((maxn-minn+1) * sizeof(int));
        
        for (i = 0; i < maxn-minn; i++)
        {
            *(cpnums+i) = 0;
        }
        
        for (i = 0; i < numsSize; i++)
        {
            cpnums[nums[i]-minn] = 1;
        }
        
        return cpnums;
    }
    
    int* twoSum(int* nums, int numsSize, int target)
    {
        int* ans;
        
        ans = (int*)malloc(5*sizeof(int));
        
        int i, j;
        
        int maxn = 0, minn = 0;
        int pla1 = 0, pla2 = 0;
        
        maxn = nums[0];
        minn = nums[0];
        
        for (i = 1; i < numsSize; i++)
        {
            if (nums[i] > maxn) maxn = nums[i];
            if (nums[i] < minn) minn = nums[i];
        }
        
        int* cpnums = (int*)malloc((maxn-minn+1) * sizeof(int));
        
        cpnums = copynums(nums, numsSize, maxn, minn);
        
        for (i = 0; i < numsSize; i++)
        {
            int wanna = target - nums[i];
            
            bool flag = false;
            
            if (cpnums[wanna-minn] == 1)            // the desire number is in nums
            {
                for (j = 0; j < numsSize; j++)      // find its pla
                {
                    if (nums[j] == wanna && i != j)
                    {
                        flag = true;
                        
                        pla1 = i;
                        pla2 = j;
                        
                        break;
                    }
                }
            }
            
            if (flag) break;
        }
        
        ans[0] = pla1;
        ans[1] = pla2;
        
        return ans;
    }
    

    Complexity:O(n^2)

    Examples

    Examples_A:

    Input:
    [3,2,4]
    6
    
    Except Output:
    [1,2]
    

    Examples_B:

    Input:
    [-1,-2,-3,-4]
    -3
    
    Except Output:
    [0,1]
    

    Examples_C:

    Input:
    [-3,2,3,5]
    0
    
    Except Output:
    [0,2]
    

    Hint

    使用malloc()函数进行内存分配时应注意分配内存的大小,如

    int* cpnums = (int*)malloc((maxn-minn+1) * sizeof(int));
    

    分配(maxn-minn+1)个int的内存单元大小。

    Better Solutions:solutions

    2017/1/28

  • 相关阅读:
    json解析与序列化
    js实现千位分隔符
    map.(parseInt)方法详解
    js实现翻转一个字符串
    一个满屏 品 字布局 如何设计?
    new操作符实现过程
    常见的函数式编程模型
    Azure DevOps Server 2019 (TFS)安装教程
    在Azure DevOps Server (TFS) 中修改团队项目名称
    你好,Azure DevOps Server 2019;再见,Team Foundation Server
  • 原文地址:https://www.cnblogs.com/qq952693358/p/6354401.html
Copyright © 2011-2022 走看看