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;}};
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。。。很慢。。。。
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;}};
阅读全文
0 0
- LeetCode练习记录2017/12/9
- LeetCode练习记录2017/12/8
- LeetCode练习记录2017/12/10
- leetCode练习(9)
- php练习9-11记录
- 练习记录
- Leetcode练习 #9 Palindrome Number
- leetcode练习
- leetcode练习
- leetcode练习
- leetcode练习
- (记录)练习的记录
- LeetCode记录
- 缓冲区溢出练习记录
- POJ Volume1练习记录
- Linux练习记录
- openstack 练习记录
- shiny--练习记录
- 使用java打开本地文件的方法
- Android函数响应式编程——必学的RxJava变换操作符map、flatMap、cast、concatMap、flatMapIterable、buffer、groupBy
- 组合查询(Union)
- 问题记录4 错误 LNK2019
- OC和Swift互相跳转
- LeetCode练习记录2017/12/9
- IOS地理位置及定位系统MapKit开发推荐
- SDFormat
- 设计模式学习之单例模式
- gazebo
- 在c++中如何控制小数位数
- python正则表达式(基础)
- 敌人
- Pycharm throws error :ImportError: No module named sklearn