【LeetCode 每日一题】两数之和

tech2022-10-14  112

啊,这个基本没啥说的。就是蛮力法双循环遍历求出就很OK了。 代码如下:

class Solution { public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length; i++) { for (int j = i + 1; j < nums.length; j++) { if (nums[j] + nums[i]==target) { return new int[] { i, j }; } } } throw new IllegalArgumentException("No solution"); } }

but,我想起来之前看书刷题的时候看到的也是计算一串两数之和的题目,想到是否可以用递归穷举搜索法来求解这道简单的题目 。发现写到一半卡住辽~,只能得出这个数组中,是否可以相加得到target,但表示不出来是哪两个数。 如果有大佬看得见我这篇刷题感想,希望可以指导一下垃圾的我QAQ巨无敌感谢。

#include <stdio.h> int n,A[50]; int solve(int i,int m){ if(m==0) return 1; if(i>=n) return 0; int res=solve(i+1,m) || solve(i+1,m-A[i]); return res; } int main(){ scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&A[i]); int target; scanf("%d",&target); if(solve(0,target)) printf("yes\n"); else printf("no\n"); return 0; }

输入输出情况1: 输入: 5 1 5 7 10 21 17 输出: yes

输入输出情况2: 输入: 5 1 5 7 10 21 2 输出: no

最新回复(0)