fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <errno.h>
  4.  
  5. int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
  6. int* ret;
  7. ret = malloc(2*sizeof(int));
  8. if (!ret) {
  9. return NULL;
  10. }
  11.  
  12. for (int i = 0; i < numsSize; ++i) {
  13. for (int j = i+1; j < numsSize; ++j) {
  14. if (nums[j] + nums[i] == target) {
  15. ret[0] = i;
  16. ret[1] = j;
  17. *returnSize = 2;
  18. return ret;
  19. }
  20. }
  21. }
  22.  
  23. *returnSize = 0;
  24. printf("here");
  25. return 0;
  26. }
  27.  
  28. int main(void) {
  29. int nums[4] = {1, 2, 9, 4};
  30. int numsSize = sizeof(nums) / sizeof(nums[0]);
  31. int target = 6;
  32. int* returnSize = 0;
  33. int* res = 0;
  34.  
  35. res = twoSum(nums, numsSize, target, &returnSize);
  36. printf("res:%d, res[0]:%d, res[1]:%d\r\n", *res, res[0], res[1]);
  37. if (res == NULL) {
  38. printf("Memory error\r\n");
  39. return -1;
  40. }
  41. else if (*res == ENODATA) {
  42. printf("No solution\r\n");
  43. return -1;
  44. }
  45.  
  46. printf("The results:\r\ntarget:%d, index %d: %d and index %d: %d\r\n",\
  47. target,\
  48. res[0], nums[res[0]],\
  49. res[1], nums[res[1]]);
  50.  
  51. return 0;
  52. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
res:1, res[0]:1, res[1]:3
The results:
target:6, index 1: 2 and index 3: 4