代码比较垃圾,拿数组实现了一个栈,查到正确结果就return。
import java.util.*;
public class Solution {
/**
*
* @param numbers int整型一维数组
* @param target int整型
* @return int整型一维数组
*/
public int[] twoSum (int[] numbers, int target) {
// write code here
IndexList in = new IndexList(new int[2],0);
twoSum(numbers,target,in);
return in.getNums();
}
public boolean twoSum (int[] numbers, int target,IndexList indexList) {
// write code here
if(indexList.getSum()==target && indexList.getLen()==2)
return true;
for(int i=0;i<numbers.length;i++){
if (indexList.getLen()==2)
return false;
if (!indexList.contain(i)){
indexList.add(numbers[i],i);
if (twoSum(numbers, target, indexList)){
return true;
}
indexList.remove(numbers[i]);
}
}
return false;
}
static class IndexList{
private int[] curr;
private int currSum;
private int currIndex = 0;
public IndexList(int[] curr,int currSum){
this.curr=curr;
this.currSum=currSum;
}
public void add(int num,int ind){
currSum+=num;
curr[currIndex++]=(ind+1);
}
public void remove(int num){
currIndex--;
currSum-=num;
}
public int getSum(){
return currSum;
}
public int getLen(){
return currIndex;
}
public int[] getNums(){
return curr;
}
public boolean contain(int i){
i=i+1;
for(int n:curr)
if(n==i)
return true;
return false;
}
}
}