首页 > 编程语言 >代码随想录之滑动窗口、Java日期api、集合(11.4-11.11)

代码随想录之滑动窗口、Java日期api、集合(11.4-11.11)

时间:2024-11-11 10:29:37浏览次数:4  
标签:backet2Account Java String 11.4 随想录 int result fruits --

代码

1、长度最小的子数组⭐

使用滑动窗口的思想,外层循环控制结束位置j,内层循环控制起始位置i,看似是双层循环,但时间复杂度是o(2n)。

 2、水果成篮

自己想法:使用backet1backet2表示篮子1和篮子2;使用backet1Accountbacket2Account分别表示两个篮子里水果的数量,内层循环将i指针向前移动。

public int totalFruit(int[] fruits) {
        int backet1=fruits[0];
        int backet2=0;

        int backet1Account=0;
        int backet2Account=0;

        int result=0;
        int i=0;
        for (int j = 0; j < fruits.length; j++) {

            if (fruits[j]==backet1){
                backet1Account++;
            }else if (fruits[j]==backet2 ||backet2Account==0 ){
                backet2=fruits[j];
                backet2Account++;
            }else{
                while (backet1Account>0 && backet2Account>0){
                    if (fruits[i]==backet1){
                        backet1Account--;
                    }else {
                        backet2Account--;
                    }
                    i++;
                }

                if (backet1Account==0){
                    backet1=fruits[j];
                    backet1Account++;
                }
                if(backet2Account==0){
                    backet2=fruits[j];
                    backet2Account++;
                }
            }

            result=result>backet1Account+backet2Account?result:backet1Account+backet2Account;
        }

        return result;
    }

 最优想法:不需要单独设置表示两个篮子里水果数量的参数,一旦下一个水果不在已有篮子里,i=j-1;内层循环将i指针向前移动,得到i位置后,将i位置的水果放入篮子1,当前j位置的水果放入篮子2,总的数量用下标表示。

public int totalFruit(int[] fruits) {
        int backet1=fruits[0];
        int backet2=0;
        
        int result=0;
        int i=0;
        for (int j = 0; j < fruits.length; j++) {

                if (fruits[j]!=backet1 && fruits[j]!=backet2){
                    i=j-1;
                    while(i>=1 && fruits[i]==fruits[i-1]){
                        i--;
                    }
                backet1=fruits[i];
                backet2=fruits[j];
                }
               

                result=result>(j-i+1)?result:(j-i+1);
        }

        return result;
    }

 

视频

  • 常用类和基础API

1、dtf=DateTimeFormatter.ofPattern("自定义格式");

dtf.format(date); //时间转为字符串     dtf.parse(字符串); //字符串转为时间

 

2、单独定义的对象类不能会和测试方法放在同一个类中,单开一个测试类,里面写测试方法。

其中当本对象的价格大于比较对象的价格时,value是正数,为从小到大的顺序排列。

要想从大到小排列,return -value;

if (o instanceof Product){
    Product p=(Product) o;
    int value=Double.compare(this.pricec,p.pricec);//基本数据直接用compare方法进行比较
    if (value!=0){
        return value;
    }
        return this.name.compareTo(p.name);//引用类型数据用compareTo方法进行比较
}
//如果不是商品类型则手动抛出异常
throw new RuntimeException("类型不匹配");

 

3、comparable 让自定义类可以进行排序 在自定义类的内部实现,对应的抽象方法compareTo(Object obj),

标签:backet2Account,Java,String,11.4,随想录,int,result,fruits,--
From: https://www.cnblogs.com/exo123/p/18525241

相关文章

  • 「Java开发指南」如何自定义Spring代码生成?(二)
    搭建用户经常发现自己对生成的代码进行相同的修改,这些修改与个人风格/偏好、项目特定需求或公司标准有关,本教程演示自定义代码生成模板,您将学习如何:创建自定义项目修改现有模板来包含自定义注释使用JET和Skyway标记库中的标记配置项目来使用自定义在上文中,我们为大家介绍了......
  • JavaScript变量
    变量是用于存储信息的"容器"。实例varx=5;vary=6;varz=x+y;尝试一下»就像代数那样x=5y=6z=x+y在代数中,我们使用字母(比如x)来保存值(比如5)。通过上面的表达式z=x+y,我们能够计算出z的值为11。在JavaScript中,这些字母被称为变量。您可以把变量看做存储数......
  • java计算机毕业设计电脑销售管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今数字化的时代,电脑销售行业竞争日益激烈。随着市场的不断扩大,电脑产品的种类繁多,销售渠道也日益多样化,传统的管理方式已经难以满足企业高效......
  • java计算机毕业设计大学实验室app(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着大学教育的不断发展,实验室在教学、科研等方面的作用日益凸显。在当今数字化时代,传统的实验室管理方式已难以满足高效、便捷管理的需求。传统......
  • java计算机毕业设计大学生创新实践成果管理与分析推荐系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在现代高等教育体系中,大学生创新实践活动日益受到重视,其是培养学生创新能力、实践能力和综合素质的关键途径。随着高校教育的不断发展,大学生参与......
  • JavaScript语法
    JavaScript 语法JavaScript是一个程序语言。语法规则定义了语言结构。JavaScript语法JavaScript是一个脚本语言。它是一个轻量级,但功能强大的编程语言。JavaScript字面量在编程语言中,一般固定值称为字面量,如3.14。数字(Number)字面量 可以是整数或者是小数,或者是科......
  • javaweb关于中文乱码问题
    javaweb文件中中文乱码问题除了好多次,总是解决不完,现在总结一下处理中文乱码的方法:客户端发送的数据编码问题:确保客户端(如浏览器)发送的数据确实是UTF-8编码的。您可以在浏览器的开发者工具中检查请求头中的Content-Type字段,确保它包含charset=UTF-8。服务器配置问题:检查......
  • 【IT人物系列】之Java之父
    前言当今世界由无数的人构成,其中有些人做了一些改变世界的事情,比如:乔布斯缔造了Apple帝国,‌詹姆斯·高斯林创造了Java语言等。正是这些优秀的人做的这些优秀的事情,让这个世界更加美好。因此他们值得铭记。从今天起,会持续更新这些大人物的相关文章。分享他们的经历,成就,希望......
  • JavaScript语法进阶:事件监听与处理
    一、概述事件定义了用户与网页交互时产生的各种操作。例如,单击按钮时,就产生一个事件,告诉浏览器发生了需要进行处理的单击操作。为了使对象能够对某一事件做出响应,就必须编写事件处理函数。事件处理函数是一段独立的程序代码,它在对象检测到某个特定事件时执行(响应该事件)。一个......
  • (代码随想录)132. 分割回文串 II(动态规划)
    132.分割回文串II这一题直接将我打回cv工程师的原型除了dp还要定义一个辅助数组,用于表示i区间到j区间是否为回文串. 动规五部曲1.确定dp含义dp[i]表示0到i之间的字符串需要切割的最小次数2.确定递推公式第一种就是0到i之间直接就是一个回文串,那么直接dp[i]=0......