题意:将数组分段,使得每段排序后的拼接和原数组的排序一致。求这些分段方案中,分段最多的情况。
思路:1,设置数组num,num[i]代表数组索引i之前的元素和。2,设置数组num1,num1[i]代表排序后数组索引i之前的元素和。3.若对应位置上的数相等,则找到一个分段点。
代码:
class Solution {
public int maxChunksToSorted(int[] arr) {
int l=arr.length;
int sum[]=new int[l];
int sum1[]=new int[l];
int result=0;
sum[0]=arr[0];
for(int i=1;i<l;i++){
sum[i]=sum[i-1]+arr[i];
}
Arrays.sort(arr);
for(int i=0;i<l;i++){
if(i==0){
sum1[i]=arr[i];
}
else{
sum1[i]=sum1[i-1]+arr[i];
}
if(sum1[i]==sum[i]){
result++;
}
}
return result;
}
}