0
点赞
收藏
分享

微信扫一扫

代码随想录算法训练营第三十一天| 455 分发饼干 376 摆动序列 53 最大子数组和

追梦人的自留地 2023-11-22 阅读 47
算法

目录

455 分发饼干

376 摆动序列

53 最大子数组和


 

455 分发饼干

class Solution {
    public int findContentChildren(int[] g, int[] s) {
        int res = 0;
        Arrays.sort(s);
        Arrays.sort(g);
        int j = s.length - 1;
        for(int i = g.length - 1;i >= 0;i--){//遍历胃口
            if(j >= 0 && s[j] >= g[i]){
                res++;j--;
            }
        }
        return res;
    }
}

时间复杂度O(max(nlogn,mlogm))快速排序所占时间复杂度为nlogn与mlogm,遍历g与s所占时间复杂度为n与m

空间复杂度O(max(logn,logm))快速排序所占的额外空间

376 摆动序列

class Solution {
    public int wiggleMaxLength(int[] nums) {
        int up = 1;//表示到目前为止最后一个元素呈上升的最大序列的长度
        int down = 1;//表示到目前为止最后一个元素呈下降的最大序列的长度
        for(int i = 1;i < nums.length;i++){
            if(nums[i] > nums[i - 1])up = down + 1;//最后一个为下降的最大序列的长度加一,转化为上升的序列
            if(nums[i] < nums[i - 1])down = up + 1;//最后一个为上升的最大序列的长度加一,转化为下降的序列
        }
        return Math.max(up,down);//返回两条子序列中的最大值
    }
}

时间复杂度O(n)

空间复杂度O(1)

53 最大子数组和

class Solution {
    public int maxSubArray(int[] nums) {
        int res = Integer.MIN_VALUE;
        int now = 0;
        for(int i = 0;i < nums.length;i++){
            now += nums[i];
            res = Math.max(res,now);
            if(now < 0)now = 0;
        }
        return res;
    }
}

时间复杂度O(n)

空间复杂度O(1)

举报

相关推荐

0 条评论