折腾了一圈改出来了二叉树~主要是vector的问题疯狂报错
vector插入直接num[i]一直报错空指针
老老实实用a.push_back(插入内容),但是查了一下貌似效率不是很高
然后就是这里面我是正向遍历然后使用了reverse(ans.begin(),ans.end());
有空的时候自己重新写一下手动翻转
使用的是比较笨的做法,不是正解。回头看
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<int>temp; vector<vector<int>>ans; if(root==NULL) return ans; queue<TreeNode*>q; int level[10000]; memset(level,0,sizeof(level)); q.push(root); level[0]=0; TreeNode*now=NULL; int numnow=0; int numleaf=1; int nowlevel=0;//认为从0层开始,树叶编号从0开始 int nowans=0; int nowtemp=0; while(!q.empty()) { now=q.front(); q.pop(); if(level[numnow]!=nowlevel) { ans.push_back(temp); temp.clear(); nowtemp=0; nowlevel++; } temp.push_back(now->val); if(now->left!=NULL) { //cout<<"num1"; q.push(now->left); level[numleaf++]=level[numnow]+1; } if(now->right!=NULL) { q.push(now->right); level[numleaf++]=level[numnow]+1; } numnow++; } ans.push_back(temp); reverse(ans.begin(),ans.end()); return ans; } };
Num 169 求众数
class Solution { public: int majorityElement(vector<int>& nums) { int now=nums[0]; int temp=1; for(int i=1;i<nums.capacity();i++) { if(temp>nums.capacity()/2) return now; if(nums[i]==now) temp++; else { if(temp==0) { now=nums[i]; temp=1; } else { temp--; } } } return now; } };
众数是一定大于等于二分之一的存在,有不一样的就抵消,最后计数为0或者大于0的就是众数