这也是我的第一场周赛。。。 好烦啊,自己连二叉树基本操作都忘了,只暴力的A了一题。调程序的时候,实验室还有人一直BBB,真烦。(2006/4022 😭)
先把A的第一题代码放上
class Solution { public: int specialArray(vector<int>& nums) { int len = nums.size(); int i = 0; while( i <= len ){ int count = 0; for( int j = 0; j < len ; j++){ if( nums[j] >= i ) count ++; if(count > i) break; } if( count == i ) return i; else i ++; } return -1; } };第二题代码(都是暴力破解。。。 利用树的层次遍历,每次判断一层是否符合要求)
class Solution { public: bool isEvenOddTree(TreeNode* root) { if (root == NULL) return false; queue<TreeNode *> CurQueue; CurQueue.push(root); int isEvenOdd = 0; while ( ! CurQueue.empty()) { int i = 1; vector<int> judge = {}; int CurSize = CurQueue.size(); while (i <= CurSize) { TreeNode *CurElement = CurQueue.front(); if (CurElement->left != NULL) CurQueue.push(CurElement->left); if (CurElement->right != NULL) CurQueue.push(CurElement->right); CurQueue.pop(); judge.push_back( CurElement->val ); i++; } if (isEvenOdd == 0) { //必须是奇数 而且递增 for (int k = 0; k < judge.size(); k++) { if (judge[k] % 2 == 0) return false; if ( ++k < judge.size() ){ if(judge[k] <= judge[--k]) return false; } } } else { for (int k = 0; k < judge.size(); k++) { if (judge[k] % 2 != 0) return false; if (++k < judge.size()) { if (judge[k] >= judge[--k]) return false; } } } if(isEvenOdd == 0) isEvenOdd = 1; else isEvenOdd = 0; } return true; } };我去,第二题就死在那个严格递增和递减上面,不能等于。。。不然7分就339名了。。。 看来leetcode周赛还是不会让你爆0的。。。