首页 > 其他分享 >leetcode 2289. 使数组按非递减顺序排列 未解决

leetcode 2289. 使数组按非递减顺序排列 未解决

时间:2024-11-30 17:10:54浏览次数:11  
标签:2289 nums int 按非 ++ flag now leetcode size

leetcode 2289. 使数组按非递减顺序排列

这道题远没有想象中的简单,如果用暴力常规方法,数据量大的情况下会超时

暴力解1:

class Solution {
public:
    int totalSteps(vector<int>& nums) {
        int size = nums.size();
        int res = 0;
        int former = 0,now = 1;
        vector<int> flag;
        while(1){
            former = 0;now = 1;//每一次循环nums[0]一定不为0
            while(now < size){
                if(nums[now] == 0) {
                    now++;continue;
                }
                if(nums[former] > nums[now] && nums[now] != 0){
                    flag.emplace_back(now);
                    former = now;
                    now++; 
                    continue;
                }
                former = now;now++;
            }
            if(flag.size() == 0)  break;
            for(int i = 0;i < flag.size();i++)  nums[flag[i]] = 0;
            flag.clear();
            res++;
        } 
        return res;    
    }
};

暴力解2:

class Solution {
public:
    int totalSteps(vector<int>& nums) {
        int res = 0;
        vector<int> flag;
        while(1){
            int size = nums.size();
            for(int i = 1; i < size;i++){
                if(nums[i-1] > nums[i])  flag.emplace_back(i);
            }
            if(flag.size() == 0)  break;
            for(int i = 0;i < flag.size();i++){
                nums.erase(nums.begin()+flag[i]-i);
            }
            flag.clear();
            res++;
        } 
        return res;    
    }
};

 

标签:2289,nums,int,按非,++,flag,now,leetcode,size
From: https://www.cnblogs.com/uacs2024/p/18578639

相关文章

  • 代码随想录算法训练营第三十二天|leetcode509. 斐波那契数、leetcode70. 爬楼梯、leet
    1动态规划五部曲文章链接:代码随想录视频链接:从此再也不怕动态规划了,动态规划解题方法论大曝光!|理论基础|力扣刷题总结|动态规划入门_哔哩哔哩_bilibili确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组2leetcode509.斐......
  • leetcode 1909. 删除一个元素使数组严格递增
    1909.删除一个元素使数组严格递增题解的做法都太复杂了,我的可能好理解一些classSolution{public:boolcanBeIncreasing(vector<int>&nums){intsize=nums.size();if(size==2)returntrue;boolisDown=false;//isDown表示是否出......
  • 代码随想录算法训练营第三十一天|leetcode56. 合并区间、leetcode738.单调递增的数字
    1leetcode56.合并区间题目链接:56.合并区间-力扣(LeetCode)文章链接:代码随想录视频链接:贪心算法,合并区间有细节!LeetCode:56.合并区间_哔哩哔哩_bilibili思路:其实很清楚,跟之前的方法差不多,但是自己写的时候就是有地方不会了,会不知道接下来的思路是什么1.1视频后的思路卡壳......
  • 代码随想录算法训练营第三十天|leetcode452. 用最少数量的箭引爆气球、leetcode435.
    1leetcode452.用最少数量的箭引爆气球题目链接:452.用最少数量的箭引爆气球-力扣(LeetCode)文章链接:代码随想录视频链接:贪心算法,判断重叠区间问题|LeetCode:452.用最少数量的箭引爆气球_哔哩哔哩_bilibili思路:有方法了,但是呢不知道怎么往后写,就是先找到对起始位置按照从小......
  • 代码随想录算法训练营第二十九天| leetcode134. 加油站、leetcode135.分发糖果、leetc
    1leetcode134.加油站题目链接:134.加油站-力扣(LeetCode)文章链接:代码随想录视频链接:贪心算法,得这么加油才能跑完全程!LeetCode:134.加油站_哔哩哔哩_bilibili思路:其实这道题我有思路了,但是不知道怎么写,感觉太暴力了,就是找到花费最小的那个位置且汽油足够往下走的地方,开始走,......
  • LeetCode—15. 三数之和(中等)
    仅供个人学习使用题目描述:给你一个整数数组 nums ,判断是否存在三元组 [nums[i],nums[j],nums[k]] 满足 i!=j、i!=k 且 j!=k ,同时还满足 nums[i]+nums[j]+nums[k]==0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。......
  • LeetCode2058. 找出临界点之间的最小和最大距离
    本题,有一定难度,但不大(我设了个全局变量,被坑了题目:本题要我们求出两个极值点最大距离以及最小距离,如果不存在则返回[-1,-1]不难看出,最小距离只会在相邻两个极值点取得,最大值则是一头一尾,这也启发我们要设置变量,用来记录头尾极值点的位置,以及两个相邻极值点的距离代码如......
  • 代码随想录算法训练营第二十八天| leetcode122.买卖股票的最佳时机 II、leetcode55.
    1leetcode122.买卖股票的最佳时机II题目链接:122.买卖股票的最佳时机II-力扣(LeetCode)文章链接:代码随想录视频链接:贪心算法也能解决股票问题!LeetCode:122.买卖股票最佳时机II_哔哩哔哩_bilibili思路:自己不知道怎么写出来的一道题目,就觉得理解上面就是找到了方法,但是后面再......
  • LeetCode - #146 LRU 缓存(Top 100)
    文章目录前言1.描述2.示例3.答案关于我们前言本题为LeetCode前100高频题我们社区陆续会将顾毅(Netflix增长黑客,《iOS面试之道》作者,ACE职业健身教练。)的Swift算法题题解整理为文字版以方便大家学习与阅读。LeetCode算法到目前我们已经更新到145期......
  • leetcode1109. 航班预订统计
    1109.航班预订统计这道题使用暴力解法,如果数据比较多,first和second跨度比较大时会超时。比如下面这个暴力解:classSolution{public:vector<int>corpFlightBookings(vector<vector<int>>&bookings,intn){vector<int>res(n,0);intsize=boo......