zoukankan      html  css  js  c++  java
  • LeetCode2

    题目:找出数组中的所有三元组a,b,c使得a+b+c = 0,所有的三元组不能重复

    提供一个复杂度O(n2)的代码,复杂度为O(n3)会超时。

     1 int cmp(const void *a, const void *b){
     2     return *((int*)a) - *((int*)b);
     3 }
     4 
     5 int** threeSum(int* nums, int numsSize, int* returnSize) {
     6     int i,j,k;
     7     int **results = (int**)malloc(sizeof(int*)*100000);
     8     int temp[3];
     9     *returnSize = 0;
    10     qsort(nums, numsSize, sizeof(int), cmp);
    11     for(i=0; i<numsSize; i++){
    12         j = i+1; k = numsSize-1;
    13         while(j<k){
    14             if(nums[j]+nums[k]<-nums[i])
    15                 j++;
    16             else if(nums[j]+nums[k]>-nums[i])
    17                 k--;
    18             else{
    19                 results[*returnSize] = (int*)malloc(sizeof(int)*3);
    20                 results[*returnSize][0] = nums[i];
    21                 results[*returnSize][1] = nums[j];
    22                 results[*returnSize][2] = nums[k];
    23                 do{j++; }while(j<k && nums[j] == results[*returnSize][1]);
    24                 do{k--; }while(j<k && nums[k] == results[*returnSize][2]);
    25                 (*returnSize)++;
    26             }
    27         }
    28         do{i++; }while(i<numsSize && nums[i]==nums[i-1]);
    29         i--;
    30     }
    31     return results;    
    32 }
  • 相关阅读:
    开灯问题
    独木舟上的旅行
    剑指offer--从尾到头打印链表
    映芬视觉网页练习
    游标的使用
    数据库操作
    关系型数据库
    数据库基础知识
    TCPSocket系列二
    HTML5新标签与css3选择器
  • 原文地址:https://www.cnblogs.com/lwyeah/p/8858502.html
Copyright © 2011-2022 走看看