1. 程式人生 > 其它 >LeetCode(C語言) - 167. 兩數之和 II - 輸入有序陣列

LeetCode(C語言) - 167. 兩數之和 II - 輸入有序陣列

https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/

注意

引數returnSize為址傳遞,應賦值為2,表示返回的陣列長度為2

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){

}

提交程式碼1:暴力法

int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){
	*returnSize=2;

    int *res=(int *)malloc(2*sizeof(int));
    
    for(int i=0;i<numbersSize-1;i++){
		for(int j=i+1;j<numbersSize;j++){
			if(numbers[i]+numbers[j] == target){
				res[0] = i+1;
				res[1] = j+1;
				return res;
			}
		}
	}
    
    res[0] = 1;
	res[1] = 2;
	return res;
}

執行結果

執行結果:
通過
顯示詳情
新增備註

執行用時:
1184 ms
, 在所有 C 提交中擊敗了
9.19%
的使用者
記憶體消耗:
7.1 MB
, 在所有 C 提交中擊敗了
56.87%
的使用者
通過測試用例:
21 / 21

完整程式碼

#include <stdio.h>
#include <malloc.h>

int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){
	*returnSize=2;

    int *res=(int *)malloc(2*sizeof(int));
    
    for(int i=0;i<numbersSize-1;i++){
		for(int j=i+1;j<numbersSize;j++){
			if(numbers[i]+numbers[j] == target){
				res[0] = i+1;
				res[1] = j+1;
				return res;
			}
		}
	}
    
    res[0] = 1;
	res[1] = 2;
	return res;
}

main(){
//	int a[] = {2,7,11,15},target = 9;
	int a[] = {2,3,4},target = 6;
	
	int len = sizeof (a) / sizeof (int);
	
	for(int i=0;i<len;i++){
		printf("%d ",a[i]);
	}
	printf("\n");
	int returnSize;
	
	int* b = twoSum(a,len,target,&returnSize);
	
	for(int i=0;i<returnSize;i++){
		printf("%d ",b[i]);
	}
	printf("\n");
}

控制檯輸出

2 3 4
1 3

--------------------------------
Process exited after 0.3133 seconds with return value 0
請按任意鍵繼續. . .