代码比较垃圾,拿数组实现了一个栈,查到正确结果就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;
        }
    }
}