Combinar dos matrices ordenadas
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
if(n==0) return ;
int i=m-1;
int j=n-1;
int end=m+n-1;
while(end>=0&&j>=0&&i>=0)
{
if(A[i]>=B[j])
{
A[end]=A[i];
i--;
}
else{
A[end]=B[j];
j--;
}
end--;
}
while(end>=0&&j>=0 )
{
A[end]=B[j];
j--;
end--;
}
while(end>=0&&i>=0)
{
A[end]=A[i];
i--;
end--;
}
}
};
Encuentre el número K-ésimo más grande
class Solution {
public:
int findKth(vector<int> a, int n, int k) {
// write code here
return quickSort(a,0,n-1,k);
}
int quickSort(vector<int>&a,int start,int end,int k)
{
int temp=a[start];
int s=start,e=end;
while(s<e)
{
while(s<e&&temp>=a[e]) e--;
a[s]=a[e];
while(s<e&&temp<=a[s]) s++;
a[e]=a[s];
}
a[s]=temp;
if(s==k-1)
{
return a[s];
}
else if(s>k-1)
{
return quickSort(a, start, s-1, k);
}
else{
return quickSort(a, s+1, end, k);
}
}
};
**子数组最大累计加和问题**
```cpp
int maxsumofSubarray(vector<int>& arr) {
// write code here
if(arr.size()==0) return 0;
vector<int> dp(arr.size(),0);
dp[0]=arr[0];
int max1=dp[0];
for(int i=1;i<arr.size();i++)
{
if(dp[i-1]>0)
{
dp[i]=dp[i-1]+arr[i];
}
else{
dp[i]=arr[i];
}
max1=max(max1,dp[i]);
}
return max1;
优化空间
if(arr.size()==0) return 0;
int sum=arr[0];
int max1=sum;
for(int i=1;i<arr.size();i++)
{
if(sum>0)
{
sum+=arr[i];
}
else{
sum=arr[i];
}
max1=max(max1,sum);
}
return max1;
}
};