Esempio n. 1
0
   vector<vector<int> > twoSum(vector<int> &numbers, int target, int exclude) {
        unordered_map<int, int>index;
        vector<vector<int> >result;
        for(int i=exclude+1; i<numbers.size(); ++i){
            index[numbers[i]]++;
        }

        for(int i=exclude+1; i<numbers.size(); ++i){
            int reminder  =  target - numbers[i];
            if(reminder <= numbers[i])
                continue; 
            if(index[reminder]>0){
                 result.push_back(rank3(reminder, numbers[i], numbers[exclude]));
            }
            while(numbers[i]==numbers[i+1])
                i++;
            
        }
        if(target%2==0 && index[target/2]>=2 ){
            vector<int> res =rank3(target/2, target/2, numbers[exclude]);
            result.push_back(res);
        }
        return result;
    }
Esempio n. 2
0
/* dot1_rank:
 * asp != NULL => g is root
 */
static void dot1_rank(graph_t * g, aspect_t* asp)
{
    point p;
#ifdef ALLOW_LEVELS
    attrsym_t* N_level;
#endif
    edgelabel_ranks(g);

    if (asp) {
	init_UF_size(g);
	initEdgeTypes(g);
    }

    collapse_sets(g,g);
    /*collapse_leaves(g); */
    class1(g);
    p = minmax_edges(g);
    decompose(g, 0);
    if (asp && ((GD_comp(g).size > 1)||(GD_n_cluster(g) > 0))) {
	asp->badGraph = 1;
	asp = NULL;
    }
    acyclic(g);
    if (minmax_edges2(g, p))
	decompose(g, 0);
#ifdef ALLOW_LEVELS
    if ((N_level = agattr(g,AGNODE,"level",NULL)))
	setRanks(g, N_level);
    else
#endif

    if (asp)
	rank3(g, asp);
    else
	rank1(g);

    expand_ranksets(g, asp);
    cleanup1(g);
}