LeetCode 2016 424,187,200,376,390,354,15,18,419
来源:互联网 发布:常熟淘宝培训 编辑:程序博客网 时间:2024/05/02 06:45
424 Longest Repeating Character Replacement
class Solution {public: int characterReplacement(string s, int k) { int ans=0; int ls=s.size(); vector<char> letters; int flag[30]={0}; for(int i=0;i<ls;i++) flag[s[i]-'A']=1; for(int i=0;i<26;i++) if (flag[i]>0) letters.push_back(i+'A'); int lletters=letters.size(); for(int i=0;i<lletters;i++) { int head=0,tail,leftk=k; // head is the first letter of substring // tail is the one trying to envolve if (s[head]!=letters[i]) { if (leftk>0) leftk--; else { while (head<ls && s[head]!=letters[i]) head++; } } tail=head+1; while(tail<ls) { if (s[tail]!=letters[i]) { if (leftk>0) leftk--; else { while(s[head]==letters[i]) head++; head++; } } ans=max(ans,(tail-head+1)); tail++; } } return ans; }};
class Solution {public: vector<string> findRepeatedDnaSequences(string s) { vector<string> ans; int len=10; map<string,int> flag; int ls=s.size(); int ends=ls-len; for(int i=0;i<=ends;i++) { string str=s.substr(i,len); if (flag.find(str)==flag.end()) flag[str]=1; else flag[str]=flag[str]+1; } for(map<string,int>::iterator j=flag.begin();j!=flag.end();j++) { if (j->second > 1) ans.push_back(j->first); } return ans; }};
200 Number of Islands
class Solution {public: int dx[4]={1,-1,0,0}; int dy[4]={0,0,1,-1}; vector< vector<int> > matrix; int numIslands(vector<vector<char> >& grid) { int ans=0; int row=grid.size(); if (row==0) return 0; int col=grid[0].size(); matrix.resize(row+2); for(int i=0;i<=col+1;i++) { matrix[0].push_back(0); matrix[row+1].push_back(0); } for(int i=0;i<row;i++) { matrix[i+1].push_back(0); for(int j=0;j<col;j++) { matrix[i+1].push_back(grid[i][j]-'0'); } matrix[i+1].push_back(0); } row++;col++; for(int i=0;i<=row;i++) { for(int j=0;j<=col;j++) { if (matrix[i][j]!=0) { matrix[i][j]=0; ans++; depthSearch(i,j); } } } return ans; } void depthSearch(int x,int y) { for(int i=0;i<4;i++) { int tmpx=x+dx[i],tmpy=y+dy[i]; if (matrix[tmpx][tmpy]==1) { matrix[tmpx][tmpy]=0; depthSearch(tmpx,tmpy); } } return ; }};
class Solution {public: int wiggleMaxLength(vector<int>& nums) { int ans=0; int ln=nums.size(); vector<int> fp,fn; fp.resize(ln+1); fn.resize(ln+1); for(int i=0;i<=ln;i++) { fp[i]=1;fn[i]=1; } for(int i=0;i<ln;i++) { for(int j=0;j<i;j++) { if (nums[j]<nums[i]) { fp[i]=max(fp[i],fn[j]+1); } if (nums[j]>nums[i]) { fn[i]=max(fn[i],fp[j]+1); } } } for(int i=0;i<ln;i++) { ans=max(ans,fp[i]); ans=max(ans,fn[i]); } return ans; }};
390 Elimination Game
class Solution {public:int lastRemaining(int n) { return n == 1 ? 1 : 2 * (1 + n / 2 - lastRemaining(n / 2));}};
354 Russian Doll Envelopes
class Solution {public: static bool cmp(const std::pair<int,int> &x,const std::pair<int,int> &y) { if (x.first == y.first) return x.second < y.second; return x.first < y.first; } int maxEnvelopes(vector<pair<int, int> >& envelopes) { int len=envelopes.size(); vector<int> f; f.resize(len+1); for(int i=0;i<=len;i++) f[i]=1; sort(envelopes.begin(),envelopes.end(),cmp); for(int i=0;i<len;i++) { for(int j=0;j<i;j++) { if ((envelopes[j].first < envelopes[i].first )&& (envelopes[j].second < envelopes[i].second)) { f[i]=max(f[j]+1,f[i]); } } } int ans=0; for(int i=0;i<len;i++) ans=max(ans,f[i]); return ans; }};
15 3Sum
class Solution {public: vector<vector<int> > threeSum(vector<int>& nums) { vector<vector<int> > ans; int n=nums.size(),target=0; if (n==0)return ans; sort(nums.begin(),nums.end()); int i=0,j,k; while(i<n-2) { j=i+1; k=n-1; while(j<k) { int sum=nums[i]+nums[j]+nums[k]; if (sum==target) { vector<int>tmp; tmp.push_back(nums[i]); tmp.push_back(nums[j]); tmp.push_back(nums[k]); ans.push_back(tmp); while(nums[j]==nums[j+1]) j++; while(nums[k]==nums[k-1]) k--; j++;k--; } else { if(sum>0) k--; if(sum<0) j++; } } while(nums[i]==nums[i+1])i++; i++; } return ans; }};
18 4Sum
class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int> > ans; int n=nums.size(); if (n==0)return ans; sort(nums.begin(),nums.end()); int p,i,j,k; p=0; while(p<n-3) { i=p+1; while(i<n-2) { j=i+1; k=n-1; while(j<k) { int sum=nums[p]+nums[i]+nums[j]+nums[k]; if (sum==target) { vector<int>tmp; tmp.push_back(nums[p]); tmp.push_back(nums[i]); tmp.push_back(nums[j]); tmp.push_back(nums[k]); ans.push_back(tmp); while(nums[j]==nums[j+1]) j++; while(nums[k]==nums[k-1]) k--; j++;k--; } else { if(sum>target) k--; if(sum<target) j++; } } while(nums[i]==nums[i+1])i++; i++; } while(nums[p]==nums[p+1])p++; p++; } return ans; }};
419 Battleships in a Board
class Solution {public: int dx[4]={1,-1,0,0}; int dy[4]={0,0,1,-1}; vector<vector<int> >grid; void depthSearch(int x,int y) { for(int i=0;i<4;i++) { int tx=x+dx[i]; int ty=y+dy[i]; if (grid[tx][ty]==1) { grid[tx][ty]=0; depthSearch(tx,ty); } } return ; } int countBattleships(vector<vector<char> >& board) { int ans=0; int row=board.size(); if (row==0) return ans; int col=board[0].size(); grid.resize(row+2); for(int i=0;i<=col+1;i++) { grid[0].push_back(0); grid[row+1].push_back(0); } for(int i=0;i<row;i++) { grid[i+1].push_back(0); for(int j=0;j<col;j++) { if (board[i][j]=='X') grid[i+1].push_back(1); else grid[i+1].push_back(0); } grid[i+1].push_back(0); } for(int i=1;i<=row;i++) { for(int j=1;j<=col;j++) { if (grid[i][j]==1) { ans++; grid[i][j]=0; depthSearch(i,j); } } } return ans; }};
0 0
- LeetCode 2016 424,187,200,376,390,354,15,18,419
- leetcode - 1、15、18、167
- LeetCode#15* 3Sum && LeetCode#16 3Sum Closest && LeetCode#18 4Sum
- Leetcode 419
- leetcode 200
- leetcode 200
- leetcode 18
- Leetcode 18
- Leetcode(18)
- leetcode-15
- Leetcode 15
- LeetCode 15
- Leetcode(15)
- leetcode 15
- LeetCode 15
- leetcode-1-15-16-18-Ksum
- LeetCode.419 Arithmetic Slices
- leetCode练习(187)
- Codeforces 672C Recycling Bottles 几何+贪心
- servlet与xml初步学习(2)
- J2SE第十章——Socket
- HIVE表同步至MySQL表
- selenium+ Phantomjs爬取动态网页
- LeetCode 2016 424,187,200,376,390,354,15,18,419
- java多态的特性
- Netty之TCP粘包拆包问题
- JPA 菜鸟教程 14 自定义类型-@Embedded+@Embeddable
- 【HTML5】折线
- 面试知识点(第二弹:多线程)
- Array(4) -- Rotate Array
- 51Nod-1712-区间求和
- 如何用70行代码实现深度神经网络算法