LeetCode 2015.7.26 116,108,96,94,35,80,77,74,73

来源:互联网 发布:淘宝腰脱九块九包官网 编辑:程序博客网 时间:2024/06/05 08:26
LeetCode 2015.7.26 116,108,96,94,35,80,77,74,73116 Populating Next Right Pointers in Each Node1.class Solution {public:    vector <TreeLinkNode*> next;    void connect(TreeLinkNode *root) {        depthSearch(root,0);        next.clear();    }    void depthSearch(TreeLinkNode* root,int depth) {        if (root!=NULL)        {      //      cout<<root->val<<"   "<<depth<<endl;            if (depth>=next.size())            {                next.push_back(root);            }            else            {                TreeLinkNode* p = next[depth];                p->next = root;                next[depth] = root;            }            depthSearch(root->left,depth+1);            depthSearch(root->right,depth+1);        }        return ;    }};2. 搜的解题报告class Solution {public:    void connect(TreeLinkNode *root) {        if (root == NULL) return ;        if (root->next && root->right)            root->right->next = root->next->left;        if (root->left)            root->left->next=root->right;        connect(root->left);        connect(root->right);    }};108 Convert Sorted Array to Binary Search Treeclass Solution {public:    TreeNode* sortedArrayToBST(vector<int>& nums) {        if (nums.size()==0) return NULL;        TreeNode* tmp = new TreeNode(0);        if (nums.size() == 1)        {            tmp->val = nums[0];            return tmp;        }        else        {            int mid = nums.size()/2;            tmp->val = nums[mid];            vector<int>nleft;            vector<int>nright;            nleft.clear();nright.clear();            for(int i=0;i<mid;i++)                nleft.push_back(nums[i]);            for(int i=mid+1;i<nums.size();i++)                nright.push_back(nums[i]);            tmp->left = sortedArrayToBST(nleft);            tmp->right = sortedArrayToBST(nright);        }        return tmp;    }};96 Unique Binary Search Treesclass Solution {public:    int numTrees(int n) {        vector<int> f;        f.clear();        f.resize(n+2);        f[0]=1;        f[1]=1;        f[2]=2;        if (n<=2) return f[n];        for(int i=3;i<=n;i++)        {            f[i]=0;            for(int j=0;j<i;j++)                f[i]+=f[j]*f[i-j-1];        }        return f[n];    }};94 Binary Tree Inorder Traversalclass Solution {public:    vector<int> inorderTraversal(TreeNode* root) {        vector<int> ans;        if (root == NULL) return ans;        stack<TreeNode*> s;        TreeNode* T = root;        while (T || !s.empty())        {            while (T)            {                s.push(T);                T=T->left;            }            T = s.top();            s.pop();            ans.push_back(T->val);            T=T->right;        }        return ans;    }};35 Search Insert Positionclass Solution {public:    int searchInsert(vector<int>& nums, int target) {        if (nums.size()==0) return 0;        int left = 0, right = nums.size()-1;        while (left<right)        {            int mid = left + (right-left) / 2;            if (nums[mid] == target) return mid;            if (nums[mid] > target) right = mid - 1;            else left = mid + 1;        }        if (nums[left] >= target) return left;        else return left+1;    }};80 Remove Duplicates from Sorted Array II1.class Solution {public:    int removeDuplicates(vector<int>& nums) {        map<int,int> cnt;        vector<int> ans;        map<int,int>::iterator it;        for(int i=0;i<nums.size();i++)        {            it = cnt.find(nums[i]);            if (it!=cnt.end())            {                if (it->second <2)                {                    int tmpsecond = it->second + 1;                    cnt.erase(it);                    cnt.insert(pair<int,int>(nums[i],tmpsecond));                    ans.push_back(nums[i]);                }            }            else            {                cnt.insert(pair<int,int>(nums[i],1));                ans.push_back(nums[i]);            }        }        nums.clear();        nums.resize(ans.size());        copy(ans.begin(),ans.end(),nums.begin());        return nums.size();    }};2.搜的思路class Solution {public:    int removeDuplicates(vector<int>& nums) {        if (nums.size()<3) return nums.size();        vector<int> ans;        ans.push_back(nums[0]);        ans.push_back(nums[1]);        for(int i=2;i<nums.size();i++)        {            if (nums[i]!=nums[i-2])                ans.push_back(nums[i]);        }        nums.clear();        nums.resize(ans.size());        copy(ans.begin(),ans.end(),nums.begin());        return nums.size();    }};77 Combinationsclass Solution {public:    vector<int> per;    vector< vector<int> > ans;    vector< vector<int> > combine(int n, int k) {        ans.clear();        per.resize(k);        generateCombine(n,k,1,0);        return ans;    }    void generateCombine(int n, int k, int start , int index) {        if (k==0)        {            ans.push_back(per);            return ;        }        for(int i=start;i<=n;i++)        {            per[index] = i;            generateCombine(n,k-1,i+1,index+1);        }    }};74 Search a 2D Matrix1.class Solution {public:    bool searchMatrix(vector <vector<int> >& matrix, int target) {        if (matrix.size()==0) return false;        int row = matrix.size()-1;        int col = matrix[0].size()-1;        int left = 0,right = row, r;        while (left < right)        {            int mid = left + (right - left) / 2;            if (matrix[mid][col]>=target && matrix[mid][0]<=target)                {                    r=mid;break;                }            if (matrix[mid][col]<target) left = mid + 1;            else right=mid - 1;        }        if (left >= right) r = left;        left = 0;right = col;        while (left < right)        {           int mid = left+(right-left)/2;           if (matrix[r][mid] == target) return true;           if (matrix[r][mid] > target)                right = mid - 1;           else left = mid + 1;        }        if (matrix[r][left]==target) return true;        else return false;    }};2.搜的思路class Solution {public:    bool searchMatrix(vector <vector<int> >& matrix, int target) {        int row = matrix.size(), col = matrix[0].size();        int left = 0, right = row * col - 1;        while (left <= right)        {            int mid = left +(right - left)/2;            int r = mid / col, c = mid % col;            if (matrix[r][c]==target) return true;            if (matrix[r][c] < target)                left = mid +1;            else                right = mid -1;        }        return false;    }};73 Set Matrix Zeroes1.class Solution {public:    void setZeroes(vector< vector<int> >& matrix) {        int row = matrix.size(), col = matrix[0].size();        vector<int>c,r;        int bitsize = 32;        c.resize(10);        r.resize(10);        for(int i=0;i<row;i++)            for(int j=0;j<col;j++)            {                if (matrix[i][j]==0)                {                    int tmpr = i / bitsize, tmpc = j / bitsize;                    r[tmpr] = r[tmpr] | (1<<(i % bitsize + 1));                    c[tmpc] = c[tmpc] | (1<<(j % bitsize + 1));                }            }        for(int i=0;i<row;i++)        {            int tmpr = i / bitsize;            int tmp= 1<<(i%bitsize+1);            if ((r[tmpr]&tmp) !=0)            {                for(int j=0;j<col;j++)                    matrix[i][j]=0;            }        }        for(int i=0;i<col;i++)        {            int tmpc = i / bitsize;            int tmp = 1<<(i%bitsize+1);            if ((c[tmpc]&tmp) != 0)            {                for(int j=0;j<row;j++)                    matrix[j][i]=0;            }        }        return ;    }};2. 搜的思路class Solution {public:    void setZeroes(vector< vector<int> >& matrix) {        int row = matrix.size(), col = matrix[0].size();        bool col0=false;        for(int i=0;i<row;i++)        {            if (matrix[i][0]==0) col0=true;            for(int j=1;j<col;j++)            {                if (matrix[i][j]==0)                {                    matrix[0][j]=0;                    matrix[i][0]=0;                }            }        }        for(int i=row-1;i>=0;i--)        {            for(int j=1;j<col;j++)            {                if (matrix[i][0]==0 || matrix[0][j]==0)                    matrix[i][j] = 0;            }            if (col0) matrix[i][0]=0;        }    }};

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 四年级孩子数学不好怎么办 孩子学习不开窍怎么办 孩子学习太笨怎么办 老师是个小人怎么办 孩子写字太差怎么办 孩子写字下手重怎么办 孩子一年级数学不好怎么办 孩子数学理解能力差怎么办 智商情商都低怎么办 一年级孩子数学很差怎么办 一年级孩子数学差怎么办 一年级数学学不好怎么办 孩子成绩差该怎么办 小学生数学太差怎么办 小学数学基础差怎么办 孩子一年级学习不好怎么办 快两岁的宝宝老尿裤怎么办 戒母乳宝宝哭闹怎么办 三周岁不肯说话怎么办 两岁宝宝打人怎么办 刚开始跳绳腿疼怎么办 两周岁宝宝拉肚子怎么办 宝宝睡觉认人怎么办 宝宝脸不光滑怎么办 两周岁宝宝打人怎么办 分手后想念前任怎么办 孩子不学习该怎么办 小孩吃了牙膏怎么办 小孩子吃了牙膏怎么办 一岁宝宝龋齿怎么办 宝宝吃牙膏了怎么办 刷牙吞了牙膏怎么办 宝宝刷牙吞牙膏怎么办 宝宝语言发育迟缓怎么办 两岁宝宝叛逆怎么办 宝宝不愿意学说话怎么办 一岁多宝宝嘴臭怎么办 三岁多了不说话怎么办 宝宝说话夹舌头怎么办 两岁不会说话怎么办 三周岁不会说话怎么办