int search_target(int A[], int start, int end, int target){ if(start > end){ return -1; } int mid = (start + end) / 2; if(A[mid] == target){ return mid; } if(A[mid] < target){ return search_target(A, mid + 1, end, target); } else{ return search_target(A, start, mid - 1, target); } }
OPJ_BOOL identify_target( query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target) { if( query_param.tid){ if( strcmp( query_param.tid, "0") != 0 ){ if( query_param.cid[0] != '\0'){ fprintf( FCGI_stdout, "Reason: Target can not be specified both through tid and cid\r\n"); fprintf( FCGI_stdout, "Status: 400\r\n"); return OPJ_FALSE; } if( ( *target = search_targetBytid( query_param.tid, targetlist))) return OPJ_TRUE; } } if( query_param.target) if( !( *target = search_target( query_param.target, targetlist))) if(!( *target = gene_target( targetlist, query_param.target))) return OPJ_FALSE; if( *target){ fprintf( FCGI_stdout, "JPIP-tid: %s\r\n", (*target)->tid); return OPJ_TRUE; } else{ fprintf( FCGI_stdout, "Reason: target not found\r\n"); fprintf( FCGI_stdout, "Status: 400\r\n"); return OPJ_FALSE; } }
void MainWindow::heavy_task_done() { ui->progressBar->hide(); auto solution = qobject_cast<histogram_solution*>(ui->stackedWidgetMethod->currentWidget()); auto const Result = solution->search_target(target_); setEnabled(true); show_result_thumb(Result); }
vector<int> searchRange(int A[], int n, int target) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<int> range; int index = search_target(A, 0, n - 1, target); if(index == -1){ range.push_back(-1); range.push_back(-1); } else{ int left = index, right = index; while(left > 0 && A[left - 1] == A[index]){ left--; } while(right < n - 1 && A[right + 1] == A[index]){ right++; } range.push_back(left); range.push_back(right); } return range; }