File tree Expand file tree Collapse file tree 2 files changed +74
-0
lines changed
Expand file tree Collapse file tree 2 files changed +74
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ double largestSumOfAverages (vector<int >& A, int K) {
4+
5+ vector<double >P (A.size ()+1 );
6+ vector<double >dp (A.size ()+1 ,0 );
7+ int n = A.size ();
8+
9+ for (int i=0 ;i<n;i++){
10+ P[i+1 ] = P[i]+A[i];
11+ }
12+
13+ for (int i=0 ;i<n;i++){
14+ dp[i] = (P[n]-P[i])/(n-i);
15+ }
16+
17+ for (int i=0 ;i<K-1 ;i++){
18+ for (int j=0 ;j<n;j++){
19+ for (int k=j+1 ;k<n;k++){
20+ dp[j] = max (dp[j],(P[k]-P[j])/(k-j)+dp[k]);
21+ }
22+ }
23+ }
24+
25+ return dp[0 ];
26+ }
27+ };
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ unordered_map<int ,vector<int >>mp;
4+
5+ int check (int x,int curr){
6+ auto itr = mp[x];
7+
8+ for (auto i=itr.begin ();i!=itr.end ();i++){
9+ if (*i>curr){
10+ return *i;
11+ }
12+ }
13+
14+ return -1 ;
15+ }
16+
17+ int longestArithSeqLength (vector<int >& arr) {
18+
19+ for (int i=0 ;i<arr.size ();i++){
20+ mp[arr[i]].push_back (i);
21+ }
22+
23+ int ans = 1 ;
24+
25+ for (int i=0 ;i<arr.size ();i++){
26+ for (int j=i+1 ;j<arr.size ();j++){
27+ int cnt = 2 ;
28+ int curr = j;
29+ int diff = arr[j]-arr[i];
30+
31+
32+ while (mp.find (arr[curr]+diff)!=mp.end ()){
33+ curr = check (arr[curr]+diff,curr);
34+ if (curr == -1 )
35+ break ;
36+ cnt++;
37+ }
38+
39+
40+ ans = max (ans,cnt);
41+ }
42+ }
43+
44+ return ans;
45+
46+ }
47+ };
You can’t perform that action at this time.
0 commit comments