首页 > 其他分享 >769. 最多能完成排序的块

769. 最多能完成排序的块

时间:2022-10-13 18:55:17浏览次数:45  
标签:arr 769 int 复杂度 位置 最多能 计数 maxl 排序

解题思路:

  • 首先明确一个观念,排好序的arr中arr[i]=i;
  • 而如果出现了位置arr[i]≠i,则说明至少 i 位置到 arr[i] 位置都是无序的;
  • 而如果从 i 位置到 arr[i] 位置中有比 arr[i] 更大的位置 maxl ,则会将上限更新到更大的位置;
  • 而我们计数时,只有直到不会发更新为止(不会发生更新则说明 i 等于 maxl )才计数一次;
  • 对于arr[i]=i的数据,如果它们在i 位置到 arr[i] 位置中,则说明其处于无序状态,只有不位于其中才为有序状态,才会计数一次;

代码实现:

class Solution {
public:
    int maxChunksToSorted(vector<int>& arr) {
        int n=arr.size();
        int num=0;
        int maxl=0,flag=0;
        for(int i=0;i<n;i++)
        {
            if(flag==0&&arr[i]==i)      //不位于无序状态中num++ 
            {
                num++;
            }
            if(arr[i]!=i)               //进入了无序状态
            {
                if(flag==0)             //flag置1
                {
                    flag=1;
                    num++;
                }
                maxl=max(maxl,arr[i]);  //更新上限
            }
            if(i==maxl)                 //判读是否退出了无序状态
            {
                flag=0;
                maxl=0;
            }
        }
        return num;
    }
};

复杂度分析:

  • 时间复杂度为O(n);
  • 空间复杂度为O(1);

标签:arr,769,int,复杂度,位置,最多能,计数,maxl,排序
From: https://www.cnblogs.com/bzxf/p/16789305.html

相关文章

  • 排序和过滤源码分析,RBAC的介绍和使用,后台管理simplui的介绍和使用
    1.排序和过滤源码分析#继承了GenericAPIView+ListModelMixin,只要在视图类中配置filter_backends它就能实现过滤和排序-drf内置的过滤类(SearchFilter),排序类(Ordering......
  • 冒泡排序(对于数组元素较少的可以采用这种方法进行比较)
    对于数组个数比较少的,我们可以采用冒泡排序的方法来进行排序,他的原理其实是利用两层循环来进行比较,如果n个数要进行排序,那至少要进行n-1次的回合,而且每次需要排n-i次,就像吐......
  • vue拖拽排序功能
    实现效果(可以拖拽排序)  实现步骤一:安装依赖npminstallvuedraggable--save二:在页面中引入importdraggablefrom"vuedraggable";components:{draggab......
  • 【Mysql】 查询数据排序以及聚合函数
    #排序#orderby字段#asc从小到大排序,即升序#desc从大到小排序,即降序#查询年龄在18到34岁之间的男性,按照年龄从小到大排序select*fromstudentswhere......
  • MySql多字段排序
    我们平常工作中需求可能会要求表格某些数据会挨一起的,这样比较好比较的,这个就涉及到了MySQL多列排序问题ORDERBYlcl.id,ldt.id,lpe.weight_max上面需要排序的列越往前......
  • 对栈排序
    publicstaticvoidsortStack(Stackstack){    inttemp;    Stackstack2=newStack<>();    while(!stack.isEmpty()){    temp=stack.p......
  • python 排序函数--sort()--sorted()
    python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法区别为:sort()方法对list排序会修改list本身,不会返回新list。sort()只能对list进行排序。......
  • mysql的sql是先分组还是先排序?
    一、实验准备  实验对象:mysql5.7.36-log实验环境:  1、MicrosoftWindows版本21H2(操作系统内部版本19044.2006)  2、一张有一个字段可供排序有一个字段可供分组......
  • Java8集合通过流排序,Stream<T> sorted(Comparator<? super T> comparator)
    Java8中,可以通过流的sorted操作对流中的元素排序,sorted操作的参数是Comparator接口,通过传入一个比较函数来实现排序操作,最直接的,就是通过形如(a,b)->{in......
  • js 冒泡排序
    冒泡排序趟数?次数?vara=[10,5,7,8,4,3,2,4,1,0];//从小到大for(vari=0;i<a.length;i++){//趟数for(varj=0;j<a.length......