首页 > 编程语言 >算法--2023.1.14

算法--2023.1.14

时间:2023-01-14 15:13:12浏览次数:43  
标签:cnt 14 temp -- int 2023.1 intervals public

1.力扣435--无重叠区间

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals,(o1,o2)->(o1[1]-o2[1]));
        int res = 1;
        int n = intervals.length;
        int start = intervals[0][0], end = intervals[0][1];
        for(int i = 1; i < n; i++){
            int l = intervals[i][0], r = intervals[i][1];
            if(l<end){
                continue;
            }else{
                start = l;
                end = r;
                res++;
            }
        }
        return n-res;
        
    }
}

2.力扣152--乘积最大子数组

class Solution {
    //思路:动态规划
    //在每个节点,保留遍历到当前节点的最大值和最小值
    public int maxProduct(int[] nums) {
        int n = nums.length;
        int[] dp1 = new int[n+1];
        int[] dp2 = new int[n+1];
        int res = nums[0];
        dp1[0] = 1;dp2[0] = 1;
        for(int i = 1;i<=n;i++){
            //temp1:遍历到上一个节点最大值与当前节点的乘积
            int temp1 = dp1[i-1] * nums[i-1];
            //temp2:遍历到上一个节点最小值与当前节点的乘积
            int temp2 = dp2[i-1] * nums[i-1];
            //最大值:temp1,temp2,当前节点中选择一个最大的(因为序列中可能会存在零,所以当前节点的最大值可能是该节点的值)
            dp1[i] = Math.max(nums[i-1],Math.max(temp1,temp2));
            //最小值:同理
            dp2[i] = Math.min(nums[i-1],Math.min(temp1,temp2));
            res = Math.max(res,dp1[i]);
        }
        return res;
    }
}

3.力扣151--最小栈

class MinStack {

    //两个数组。一个按照栈的逻辑后进先出,另一个保存当前节点的最小值
    public static int[] nums1, nums2;
    public static int N, cnt;  
    
    public MinStack() {
        N = 100010;
        nums1 = new int[N];
        nums2 = new int[N];
        nums1[0] = Integer.MAX_VALUE;
        nums2[0] = Integer.MAX_VALUE;
        cnt = 1;
    }
    
    public void push(int val) {
        nums1[cnt] = val;
        if(val<nums2[cnt-1]){
            nums2[cnt] = val;
        }else{
            nums2[cnt] = nums2[cnt-1];
        }
        cnt++;
    }
    
    public void pop() {
        cnt--;
    }
    
    public int top() {
        return nums1[cnt-1];
    }
    
    public int getMin() {
        return nums2[cnt-1];
    }
}

4.力扣160--相交链表

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode p = headA, q = headB;
        while(true){
            if(p == q){
                return p;
            }else{
                if(p!=null){
                    p = p.next;
                }else{
                     p =headB;
                }
                if(q!=null){
                    q = q.next;
                }else{
                    q = headA;
                }
            }
        }
        //return p;
    }
}

5.力扣169--多数元素

class Solution {
    //两个变量temp,cnt,temp相当于一个容器但里面只有一个数据,保存的是当前的数据,cnt保存的是当前数据的个数,如果遍历下一个数据与当前
    //数据不相同,则cnt--,否则cnt++;如果cnt == 0 ,则temp保存当前的值
    public int majorityElement(int[] nums) {
        int temp = 0, cnt = 0;
        for(int t : nums){
            if(cnt == 0){
                temp = t;
                cnt++;
            }else{
                if(temp == t){
                    cnt++;
                }else{
                    cnt--;
                }
            } 
            //System.out.println(temp);
        }
        return temp;
    }
}

  

  

标签:cnt,14,temp,--,int,2023.1,intervals,public
From: https://www.cnblogs.com/lyjps/p/17051871.html

相关文章

  • antd vue 动态主题 ConfigProvider 修改组件圆角
    动态主题ConfigProvider根据文档配置:https://www.antdv.com/docs/vue/customize-theme-variable-cn需求是修改圆角。文档引入的是:import'ant-design-vue/dist/......
  • java基础知识----自增自减
    java的自增自减++(自增)publicclassDemo02{publicstaticvoidmain(String[]args){inta=3;intb=a++;System.out.println("......
  • 怎么从菜鸟程序员变成架构师?
    一般一个人的成长是分几个阶段的,具体如下:1)刚开始参与开发阶段:这个阶段基础不是很好,一边学基础,一边做开发,刚开始的时候大家都是这样,如果想快速的跳过这个阶段,工具书与笔记(......
  • noi 2.1 1978 生理周期
    noi1978生理周期1.描述人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面......
  • 【Javaweb】瑞吉外卖你冲不冲?冲冲!冲!冲冲!(数据库环境搭建)(maven项目搭建)一
    图形界面创建数据库(Navicat)  命令行方式创建      瑞吉项目一共涉及到十一张表  导入表结构,既可以使用上面的图形界面,也可以使用MySQL命令:通过命......
  • 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介
    目录普冉PY32系列(一)PY32F0系列32位CortexM0+MCU简介普冉PY32系列(二)UbuntuGCCToolchain和VSCode开发环境PY32F0系列上市其实相当长一段时间了,样品已经吃灰......
  • 程序员喜欢Linux系统的原因是什么?
    当下,比较主流的操作系统是:Windows系统、Linux系统以及Mac系统。而在云计算、大数据、物联网等领域最为常见的就是Linux系统,深受开发人员的喜欢。那么程序员喜欢Linux系......
  • PHP后门反弹演示
    准备一台kali虚拟机一台win11物理机phpstudy开启Nginx和Mysqlphpstudy中已经搭建好DVWA靶场DVWA靶场的安全等级调整值low​注意:需要将杀毒软件个关了,否则有提示,黑......
  • 一分钟带你了解如何防范0day攻击!
    在网络安全体系中,0day通常是指还没有补丁的漏洞,而0day攻击则是指利用0day漏洞进行的攻击。该攻击方式影响范围大,具有广泛性,而且传统防御手段无法检测,因此防护0day攻击便......
  • Linux下图片处理
    Linux下图片处理   图片是指由图形、图像等构成的平面媒体。图片的格式很多,但总体上可以分为点阵图和矢量图两大类,我们常用BMP、JPG等格式都是点阵图形,而SWF、CDR、AI......