LeetCode练习记录2017/12/9

来源:互联网 发布:韩国实力知乎 编辑:程序博客网 时间:2024/06/07 15:39

【406】Queue Reconstruciton by Height

class Solution {public:vector<pair<int, int>> reconstructQueue(vector<pair<int, int>>& people) {vector<pair<int, int>>result;if (people.empty())return result;sort(people.begin(), people.end(), compare);for(int i=0;i<people.size();i++){int pos = people[i].second;result.insert(result.begin() + pos, people[i]);}return result;}bool compare(const pair<int, int>&a,const pair<int,int>&b){if (a.first == b.first)return a.second < b.second;else return a.first < b.first;}};


【540】Single Element in a Sorted Array

class Solution {public:    int singleNonDuplicate(vector<int>& nums) {        int i;        for(i=0;i<nums.size()/2;i+=2)        {            if(nums[i]+nums[nums.size()-1-i]!=nums[i+1]+nums[nums.size()-2-i])                break;        }        if(nums[i]<nums[i+1])            return nums[i];        else return nums[nums.size()-1-i];    }};

这个方法没有满足log(n)的时间复杂度要求;

第二个方法:

class Solution {public:    int singleNonDuplicate(vector<int>& nums) {        int i=nums.size()/2;        int start=0;        int end=nums.size()-1;        while(start<end)        {            if(nums[i]==nums[i-1])             {                if((i-start)%2==1)                {                    start=i+1;i=(start+end)/2;continue;                }                else                {                    end=i;i=(start+end)/2;continue;                }            }            if(nums[i]==nums[i+1])            {                if((i-start)%2==1)                {                    end=i-1;i=(start+end)/2;continue;                }                else                {                    start=i;i=(start+end)/2;continue;                }            }            break;        }            return nums[i];    }};
然而两个方法运行时间的都是6ms。。。很慢。。。。



【513】Find Bottom Left Tree Value

class Solution {public:int findBottomLeftValue(TreeNode* root) {queue<TreeNode*>q;q.push(root);int result;while(!q.empty()){TreeNode* p = q.front();q.pop();result = p->val;if (p->right != NULL) q.push(p->right);if (p->left != NULL) q.push(p->left);}return result;}};

【521】Longest UNcommon Subsequence I

class Solution {public:    int findLUSlength(string a, string b) {        int sa=a.length();        int sb=b.length();        if(sa>sb) return sa;        if(sb>sa) return sb;        else if(a==b)            return -1;        else return sa;    }};


【637】Average of Levels in Binary Tree

class Solution {public:vector<double> averageOfLevels(TreeNode* root) {vector<double> result;if (root == NULL) return result;queue<TreeNode*> q;q.push(root);while(!q.empty()){int num = q.size();double total = 0.0;for(int i=0;i<num;i++){TreeNode* p = q.front();q.pop();if (p->left != NULL) q.push(p->left);if (p->right != NULL) q.push(p->right);total += p->val;}result.push_back(total / num);}return result;}};


原创粉丝点击