TreeNode *maxTreeRecur(vector<int> &nums, int left, int right) { if (left > right) return NULL; if(left == right) { TreeNode *node = new TreeNode (nums[left]); return node; } int maxIndex = findMaxIndex(nums, left, right); TreeNode *node = new TreeNode (nums[maxIndex]); node->left = maxTreeRecur(nums, left, maxIndex-1); node->right = maxTreeRecur(nums, maxIndex+1, right); return node; }
void GLEScontext::convertIndirect(GLESConversionArrays& cArrs,GLsizei count,GLenum indices_type,const GLvoid* indices,GLenum array_id,GLESpointer* p) { GLenum type = p->getType(); int maxElements = findMaxIndex(count,type,indices) + 1; int attribSize = p->getSize(); int size = attribSize * maxElements; unsigned int bytes = type == GL_FIXED ? sizeof(GLfixed):sizeof(GLbyte); cArrs.allocArr(size,type); int stride = p->getStride()?p->getStride():bytes*attribSize; const char* data = (const char*)p->getArrayData(); if(type == GL_FIXED) { convertFixedIndirectLoop(data,stride,cArrs.getCurrentData(),count,indices_type,indices,attribSize*sizeof(GLfloat),attribSize); } else if(type == GL_BYTE){ convertByteIndirectLoop(data,stride,cArrs.getCurrentData(),count,indices_type,indices,attribSize*sizeof(GLshort),attribSize); } }