1423 a spliting window but hard to recognize...
This commit is contained in:
		
							
								
								
									
										69
									
								
								1423-231205-pass/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								1423-231205-pass/main.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | |||||||
|  | #include<stdcpp.h> | ||||||
|  | using namespace std; | ||||||
|  | class Solution { | ||||||
|  | public: | ||||||
|  |     int maxScore1(vector<int>& cardPoints, int k) { | ||||||
|  |         const int len = 1e5+10; | ||||||
|  |         const int siz = cardPoints.size(); | ||||||
|  |         int h2t_state[len][2]= {}, t2h_state[len][2] = {}; | ||||||
|  |         h2t_state[0][1] = cardPoints[0]; | ||||||
|  |         t2h_state[siz-1][1] = cardPoints[siz - 1]; | ||||||
|  |         for(int i = 2 ; i <= k ; i++){ | ||||||
|  |             int idx = i%2; | ||||||
|  |             for(int j = 0 ; j < i ; j++){ | ||||||
|  |                 // h2t_state[j][idx] = t2h_state[siz-j-1][1-idx] + cardPoints[j]; | ||||||
|  |                 // t2h_state[siz-j-1][idx] = h2t_state[j][1-idx] + cardPoints[siz-j-1]; | ||||||
|  |                 if(j == 0){ | ||||||
|  |                     h2t_state[j][idx] = t2h_state[siz - i + 1][1-idx] + cardPoints[j]; | ||||||
|  |                     t2h_state[siz-j-1][idx] = h2t_state[ i - 2 ][1-idx] + cardPoints[siz-j-1]; | ||||||
|  |                 }else{ | ||||||
|  |                     h2t_state[j][idx] = h2t_state[j-1][1-idx] + cardPoints[j]; | ||||||
|  |                     t2h_state[siz-j-1][idx] = t2h_state[siz-j][1-idx] + cardPoints[siz-j-1]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             // cout<<"i: "<<i<<endl; | ||||||
|  |             // for(int j = 0 ; j < siz ; j++){ | ||||||
|  |             //     cout<<h2t_state[j][idx]<<' '<<t2h_state[j][idx]<<' '; | ||||||
|  |             //     cout<<h2t_state[j][1-idx]<<' '<<t2h_state[j][1-idx]<<endl; | ||||||
|  |             // } | ||||||
|  |             // cout<<"======"<<endl; | ||||||
|  |         } | ||||||
|  |         // cout<<"++++++++"<<endl; | ||||||
|  |         int rlt = -1; | ||||||
|  |         for(int i = 0 ; i < siz ; i++){ | ||||||
|  |             rlt = max(rlt,h2t_state[i][k%2]); | ||||||
|  |             rlt = max(rlt,t2h_state[i][k%2]); | ||||||
|  |             // cout<<h2t_state[i][k%2]<<' '<<t2h_state[i][k%2]<<endl; | ||||||
|  |         } | ||||||
|  |         // cout<<"done"<<endl; | ||||||
|  |         return rlt; | ||||||
|  |     } | ||||||
|  |     int maxScore(vector<int>& cardPoints, int k){ | ||||||
|  |         int sum = 0; | ||||||
|  |         int ans = 0; | ||||||
|  |         int sz = cardPoints.size(); | ||||||
|  |         for(int i = 0 ; i < k ; i++) sum+=cardPoints[i]; | ||||||
|  |         ans = sum; | ||||||
|  |         for(int i = 0 ; i < k ; i++){ | ||||||
|  |             sum-=cardPoints[k - i - 1]; | ||||||
|  |             sum+=cardPoints[sz - 1 - i]; | ||||||
|  |             ans = max(ans, sum); | ||||||
|  |             cout<<sum<<endl; | ||||||
|  |         } | ||||||
|  |         return ans; | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | int main(){ | ||||||
|  |     Solution sol; | ||||||
|  |     vector<int> ex1 = {1,2,3,4,5,6,1}; | ||||||
|  |     int k1 = 3; | ||||||
|  |     cout<<sol.maxScore(ex1,k1)<<endl; | ||||||
|  |  | ||||||
|  |     vector<int> ex2 = {2,2,2}; | ||||||
|  |     int k2 = 2; | ||||||
|  |     cout<<sol.maxScore(ex2,k2)<<endl; | ||||||
|  |  | ||||||
|  |     vector<int> ex3 = {9,7,7,9,7,7,9}; | ||||||
|  |     int k3 = 7; | ||||||
|  |     cout<<sol.maxScore(ex3,k3)<<endl; | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user