LeetCode 2016 332,127,25,23,143,114
来源:互联网 发布:js 时间转换 编辑:程序博客网 时间:2024/06/05 08:11
332 Reconstruct Itinerary
class Solution {public: bool sign; vector<string> ans; vector<string> anstmp; int n; int ntickets; vector<vector<int> >used; vector<vector<int> > road; map<string, int> relation; map<int,string> itosrelation; vector<string> findItinerary(vector<pair<string, string> > tickets) { sign = false; ntickets = tickets.size(); string bgword = "JFK"; ans.clear(); anstmp.clear(); set<string> flag; relation.clear(); itosrelation.clear(); vector<string> names; road.clear(); names.clear(); flag.clear(); used.clear(); for(int i=0;i<ntickets;i++) { string sf = tickets[i].first; string ss = tickets[i].second; if (flag.find(sf)==flag.end()) { flag.insert(sf); names.push_back(sf); } if (flag.find(ss)==flag.end()) { flag.insert(ss); names.push_back(ss); } } n=names.size(); vector<vector<int> > f(n+1,vector<int>(n+1,0)); used=f; road.resize(n+5); sort(names.begin(),names.end()); //for(int j=0;j<names.size();j++) // cout<<names[j]<<endl; //cout<<"----------------"<<endl; for(int i=0;i<n;i++) { relation[names[i]]=i; itosrelation[i]=names[i]; } for(int i=0;i<ntickets;i++) { string sf = tickets[i].first; string ss = tickets[i].second; road[relation[sf]].push_back(relation[ss]); used[relation[sf]][relation[ss]]++; } for(int i=0;i<n;i++) { sort(road[i].begin(),road[i].end()); //cout<<"-----------"<<itosrelation[i]<<"-----------"<<endl; //for(int j=0;j<road[i].size();j++) // cout<<itosrelation[road[i][j]]<<endl; } int bgnums = relation[bgword]; anstmp.push_back(bgword); depthSearch(bgnums,1); return ans; } void depthSearch(int x,int k) { if(sign) return; for(int i=0;i<road[x].size();i++) { if (used[x][road[x][i]]>0) { //cout<<itosrelation[road[x][i]]<<endl; anstmp.push_back(itosrelation[road[x][i]]); used[x][road[x][i]]--; //cout<<"k = "<<k<<" ntickets = "<<ntickets<<endl; if (k==ntickets) { ans=anstmp; //cout<<"yes"<<endl; sign = true; return ; } depthSearch(road[x][i],k+1); used[x][road[x][i]]++; anstmp.pop_back(); } } return ; }};
127 Word Ladder
class Solution {public: int ladderLength(string beginWord, string endWord, unordered_set<string>& wordList) { set<string> dic; set<string> tmpdic; dic.clear(); queue<pair<string,int> > q; while(!q.empty()) q.pop(); for(unordered_set<string>::iterator i = wordList.begin();i!=wordList.end();i++) { dic.insert(*i); } q.push(make_pair(beginWord,1)); int len = (q.front()).first.size(); //cout<<q.front().first<<endl; while(!q.empty()) { string cur = q.front().first; //cout<<"cur = "<<cur<<endl; int lev = q.front().second; //cout<<"lev = "<<lev<<endl; if (cur == endWord) return lev; q.pop(); tmpdic.clear(); for(set<string>::iterator i = dic.begin();i!=dic.end();i++) { //if (dic[d]==0) continue; string d = (*i); int cnt = 0; for(int j=0;j<len;j++) { if (cur[j]!=d[j]) cnt++; if (cnt>1)break; } if (cnt==1) { tmpdic.insert(d); //cout<<"d = "<<d<<endl; q.push(make_pair(d,lev+1)); } } for(set<string>::iterator i = tmpdic.begin();i!=tmpdic.end();i++) { dic.erase(*i); } } return 0; }};
25 Reverse Nodes in k-Group
class Solution {public: ListNode* reverseKGroup(ListNode* head, int k) { if (head == NULL) return head; ListNode* first = new ListNode(0); first->next = head; ListNode* p = first; ListNode* tmp; ListNode* last = first; int cnt = 0; vector<ListNode*> trace; trace.clear(); while(p->next != NULL) { p=p->next; cnt++; trace.push_back(p); if (cnt == k) { last->next = trace[k-1]; trace[0]->next = p->next; for(int i=k-1;i>0;i--) { trace[i]->next = trace[i-1]; } last =trace[0]; p=trace[0]; trace.clear(); cnt=0; } } return first->next; }};
class Solution {public: set<ListNode*> head; ListNode* ans; ListNode* mergeKLists(vector<ListNode*>& lists) { ListNode* tmpans = new ListNode(0); ans = tmpans; ListNode* res = tmpans; vector<ListNode*> special; special.clear(); int len = lists.size(); if (len == 0) return NULL; for(int i=0;i<len;i++) { if (lists[i]==NULL) continue; if (lists[i]->next == NULL) { special.push_back(lists[i]); continue; } if (lists[i]!=NULL) head.insert(lists[i]); } int ls = special.size(); if (ls != 0) { dealWithSpecial(special); } while (!head.empty()) { if (head.size()==1) { set<ListNode*>::iterator p = head.begin(); ans->next = (*p); break; } findMin(); } return res->next; } static bool cmp(ListNode* x,ListNode* y) { return (x->val < y->val); } void dealWithSpecial(vector<ListNode*> sp) { int ls = sp.size(); sort(sp.begin(),sp.end(),cmp); ls--; for(int i=0;i<ls;i++) { sp[i]->next = sp[i+1]; } head.insert(sp[0]); } void findMin() { int m = INT_MAX; ListNode *p, *mPointer; //cout<<"-----------findMin()---------"<<endl; for(set<ListNode*>::iterator i = head.begin();i!=head.end();i++) { p=(*i); if (p->val < m) { m=p->val; mPointer = p; //cout<<"min m = "<<m<<endl; } } ans->next = mPointer; ans = ans->next; if (mPointer->next != NULL)head.insert(mPointer->next); head.erase(mPointer); }};
class Solution {public: void reorderList(ListNode* head) { if (head ==NULL) return ; vector<ListNode*> re; re.clear(); int n = 0; ListNode *p = head; while(p!=NULL) { re.push_back(p); n++; p=p->next; } int m = n/2; int tn = n-1; re.push_back(NULL); for(int i=0;i<m;i++) { re[i]->next = re[tn-i]; re[tn-i]->next = re[i+1]; } re[m]->next =NULL; return ; }};
114 Flatten Binary Tree to Linked List
class Solution{public: TreeNode* leftmost; void flatten(TreeNode* root) { if (root==NULL) return ; if (root->left) { flatten(root->left); leftmost->right = root->right; root->right = root->left; root->left = NULL; } leftmost = root; flatten(root->right); }};
0 0
- LeetCode 2016 332,127,25,23,143,114
- LeetCode #114
- LeetCode | # 23
- Leetcode#23||
- Leetcode 23
- LeetCode #23
- LeetCode #25
- [2016/06/23] LeetCode OJ / Java
- [2016/06/25] LeetCode / Java - Day 3 -
- [LeetCode]332 航程重建
- [LeetCode 332] Reconstruct Itinerary
- LeetCode 332 : Reconstruct Itinerary
- leetcode 332 Reconstruct Itinerary
- LeetCode[332] Reconstruct Itinerary
- leetcode-332-Reconstruct Itinerary
- Leetcode 332 Reconstruct Itinerary
- LeetCode(143)Reorder List
- LeetCode 143 Reorder List
- 蓝桥杯BASIC-18(矩形面积交)
- JS数组的方法
- 打开Eclipse出错:Error:Could not create the Java Virtual Machine;Error:A fatal exception has occurred.Pro
- oj注意
- JPA 菜鸟教程 15 继承-一个表-SINGLE_TABLE
- LeetCode 2016 332,127,25,23,143,114
- SecureCRT 开启高亮
- 关于音频设备切换
- nginx常用命令
- 导入项目报错/Error:Jack is required to support java 8 language features.
- 专注当下,活在未来
- 请不要做浮躁的嵌入式系统工程师
- 异常之finally块
- Android ANR分析