static int choice( void ) { int i, n; rb->yield(); for( n = i = 0 ; i < 81 ; ++i ) if( IS_EMPTY( i ) ) { possible[ n ] = SET_INDEX( i ) | SET_DIGIT( numset( board[ i ] ) ); /* Inconsistency if square unknown, but nothing possible */ if( 9 == GET_DIGIT( possible[ n ] ) ) return -2; ++n; } if( 0 == n ) return -1; /* All squares known */ rb->qsort( possible, n, sizeof( possible[ 0 ] ), cmp ); return GET_INDEX( possible[ 0 ] ); }
static void count_set_digits( int el, int (*idx_fn)( int, int ) ) { int i; rb->memset( counts, 0x00, sizeof( counts ) ); for( i = 0 ; i < 9 ; ++i ) digits[ i ] = numset( board[ (*idx_fn)( el, i ) ] ); }
int removeDuplicates(vector<int>& nums) { set<int> numset(nums.begin(),nums.end()); nums.clear(); set<int>::iterator it; for ( it = numset.begin(); it != numset.end(); it++) { nums.push_back(*it); } return nums.size(); }
int findMissing(vector<int> &nums) { vector<bool> numset(nums.size()+1, false); if (nums.size() == 0) return 0; if (nums.size() == 1) return nums[0]+1; // write your code here for (auto item: nums) numset[item] = true; for (int i=0; i<numset.size(); i++) if (numset[i] == false) return i; }