第二周周三总结

题目总结
 

1.给你一个二进制数组 nums 。

你可以对数组执行以下操作 任意 次(也可以 0 次):

  • 选择数组中 任意连续 3 个元素,并将它们 全部反转 。

反转 一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0 。

请你返回将 nums 中所有元素变为 1 的 最少 操作次数。如果无法全部变成 1 ,返回 -1 。

示例 1:

输入:nums = [0,1,1,1,0,0]

输出:3

解释:
我们可以执行以下操作:

  • 选择下标为 0 ,1 和 2 的元素并反转,得到 nums = [1,0,0,1,0,0] 。
  • 选择下标为 1 ,2 和 3 的元素并反转,得到 nums = [1,1,1,0,0,0] 。
  • 选择下标为 3 ,4 和 5 的元素并反转,得到 nums = [1,1,1,1,1,1] 。

    class Solution {

    public:

        int minOperations(vector<int>& nums) {

            int n = nums.size();

            int ans = 0;

            for (int i = 0; i + 2 < n; i++) {

                if (nums[i] == 0) {

                    for (int j = 0; j < 3; j++)

                    {

                        if(nums[i+j]==0)

                        nums[i + j] = 1;

                        else

                        nums[i+j]=0;

                    }

                    ans++;

                }

            }

            if (nums[n - 2] && nums[n - 1]) return ans;

            return -1;

        }

    };
    根据题目模拟
    2.

    给你一个字符串 word,请你使用以下算法进行压缩:

  • 从空字符串 comp 开始。当 word 不为空 时,执行以下操作:
    • 移除 word 的最长单字符前缀,该前缀由单一字符 c 重复多次组成,且该前缀长度 最多 为 9 。
    • 将前缀的长度和字符 c 追加到 comp 。
  • 返回字符串 comp 。

    示例 1:

    输入:word = "abcde"

    输出:"1a1b1c1d1e"

    解释:

    初始时,comp = "" 。进行 5 次操作,每次操作分别选择 "a""b""c""d" 和 "e" 作为前缀。

    对每个前缀,将 "1" 和对应的字符追加到 comp
     

    class Solution {

    public:

        string compressedString(string word) {

            int ans = 1;

            string res = "";

            for(int i = 0; i < word.size(); i++){

                if(ans == 9 || word[i] != word[i + 1]){

                    res += '0' + ans;

                    ans = 1;

                    res += word[i];

                }else{

                    ans++;

                }

            }

            return res;

        }

       

    };

  • 0' + ans 这个表达式将会计算字符 '0' 的 ASCII 值加上 ans 的值。在大多数编程语言中,字符 '0' 的 ASCII 值是 48(十进制)。
  • 假设 ans 的值是 1,那么 '0' + ans 就相当于 48 + 1,即 49
    3.

    给你两个整数数组 nums1 和 nums2,长度分别为 n 和 m。同时给你一个正整数 k

    如果 nums1[i] 可以被 nums2[j] * k 整除,则称数对 (i, j) 为 优质数对0 <= i <= n - 10 <= j <= m - 1)。

    返回 优质数对 的总数。

    示例 1:

    输入:nums1 = [1,3,4], nums2 = [1,3,4], k = 1

    输出:5

    解释:

    5个优质数对分别是 (0, 0)(1, 0)(1, 1)(2, 0), 和 (2, 2)
     

    lass Solution {

    public:

        int numberOfPairs(vector<int>& nums1, vector<int>& nums2, int k) {

            int count=0;

            for(int i=0;i<nums1.size();i++){

                for(int j=0;j<nums2.size();j++){

                    if(nums1[i]%(nums2[j]*k)==0){

                        count++;

                    }

                }

            }

            return count;


     

        }

    };
    java总结
     

    面向对象的三大特征

    1.封装

    2.继承

    3.多态

    可以把类理解成某种概念,对象才是一个具体存在的实体。在java中必须先设计类才能创建对象。类的格式如下:

    publiclass 类名
    {
    成员变量
    成员方法
    构造器
    代码块
    内部类
    }

    对于类的对象,可以通过,类名 对象名 =new 类名();的形式得到。

    如何使用对象

    访问属性 :对象名.成员变量

    访问行为 :对象名。方法名()

    此外,类名首字母为大写,为英文。

    一个java文件可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。

    封装

    对象代表什么,就等封装对应的数据,并提供数据对应的行为。

    public关键词

    表示在所有类中都可以使用public修饰的成员,在定义成员变量和成员方法时默认为public修饰。

    private关键词

    1.是一个权限修饰符

    2.可以修饰成员(成员变量和成员方法)

    3.被privat修饰的成员只能在本类中访问

    public class gril
    {private int age;public void setage(int a){age=a;}public int getage(){return age;}
    }
    

    在上图中age被private修饰,在创建对象时就不能对age进行赋值。只能通过类里面的setage方法进行赋值,getage方法来获得age的值。

    this关键字

    成员变量:定义在方法外的变量。

    局部变量:定义在方法内的变量。

    public class gril
    {private int age;(成员变量)public void s(){int age=10;(局部变量)System.out.println(age);}
    }
    

    在上述代码中变量的调用遵循就近原则,谁离调用语句近就调用谁。

    如果想要调用成员变量,则需要用this关键字修饰再去调用。

    public class gril
    {private int age;(成员变量)public void s(){int age=10;(局部变量)System.out.println(this.age);}
    }

    this的本质代表方法调用者的地址值

    构造方法

    在创建对象的时候对成员变量进行赋值。

    方法名与类名一致没有返回值,连void都不能有。

    不能手动调用构造器,在创建对象时由虚拟器调用。

    每创建一次对象,就会调用一次构造方法。

    public class gril
    {private int age;(成员变量)//如果我们自己没写构造方法//虚拟机会自己添加空参构造方法public gril()
    {
    }public gril(int age)
    {this.age=age;
    }
    }

    gril s=new gril();就会调用空参构造。

    gril s=new gril(13);就会调用带参构造。
     

    字符串就是一连串的字符序列,Java提供了String、StringBuffer和StringBuilder三个类来封装宇符串,并提供了一系列方法来操作字符串对象。

    String:

    是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。

    StringBuilder:

    是JDK1.5新增的类,它也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是,StringBuffer是线程安全的,而StringBuilder 则没有实现线程安全功能,所以性能略高。因此在通常情况下,如果需要创建一个内容可变的字符串对象,则应该优先考虑使用StringBuilder类。

    String

    直接赋值获取字符串对象
    String s1="abc";

    当字符串直接赋值时,系统会检查字符串在堆内存中的串池是否存在,如果不存在创建新的

    否则将会复用。

    使用new的方式来获取一个字符串对象
    //空参构造,可以获取一个空白的字符串对象
    String s2=new String();
    //传递数组,创建对象
    char []chs={'a','b'};
    String s4=new String(chs);

    当要修改字符串内容时可以将要修改内容用数组存储,再来创建对象,通过修改数组内容,达到修改字符串对象的目的。

    对于String还可以传递字节数组,来创建字符串对象。

    byte[] bytes={97,98,99,100};
    String s5=new String(bytes);
    System.out.println(s5)
    //打印abcd

    使用new的方法获取字符串是先在堆中开辟个一个空间存储创建的内容,再将存储的地址值赋值给左边的变量,并且不会存在复用的情况。

    比较

    在java中关于比较,对于基本数据类型是比较数据值,对于引用数据类型是比较地址值。

    字符串中有两种比较方法equals和equalslgnoreCase(忽略英文大小写)。

    String s1=new String("abc");
    String s2="ABC";
    boolean result=s1.equals(s2);
    System.ou.println(result)//falseboolean result2=s1.equalsIgnoreCase(s2);
    System.ou.println(result2)//true
    

    StringBuilder

    作用:提高字符串的操作效率

    打印对象为属性值不是地址值.

    其中有如下操作方法

    public StringBuilder append()

    添加数据返回数据本身

    public StringBuilder reverse()

    反转容器中的内容

    public int length()

    返回长度

    public String toString()

    将StringBuilder转化为String

    StringBuilder sb=new Stringbuilder("abc");
    //添加元素
    sb.append(1);
    System.out.println(sb);//abc1
    //反转
    sb.reverse();
    System.out.println(sb);//cba
    //获取长度
    int a=sb.length();
    System.out.println(a);//3
    //变回字符串
    String str=sb.toString();
    System.out.println(str);//abc
    

    StringJoiner

    public StringJoiner(间隔符)

    public StringJoiner(间隔符号,开始符号,结束符号)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/870574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven高级1——一个项目拆成多个

把原来一个项目&#xff0c;拆成多个项目。 &#xff01;&#xff01;他们之间&#xff0c;靠接口通信。 以ssm整合好的项目为例&#xff1a; 如何看拆的ok不ok 只要compile通过就ok。 拆分pojo 先新建一个项目模块&#xff0c;再把内容复制进去。 拆分dao 1.和上面一样…

NI VST 毫米波测试仪器创新

目录 概览​从UHF至V频段的频率覆盖范围&#xff1a;54 GHz远程测量模块​PXIe-5842&#xff1a;VST架构的扩展54 GHz扩频PXIe-5842功能​​宽频覆盖范围​IF和毫米波测试端口可满足多频带需求​高达2 GHz瞬时带宽误差矢量幅度测量性能相位相干同步基于PXI平台集成多种仪器 互补…

maven6——生命周期与插件

生命周期 生命周期&#xff1a;指运行的阶段&#xff08;比如几岁&#xff09; maven有三个生命周期如下&#xff0c;每个生命周期大概做的事情如下&#xff1a; 注意&#xff1a;每次执行某个&#xff0c;他会把上面的都执行一遍 插件&#xff1a; 每一个插件&#xf…

【Git基本操作】创建本地仓库 | 配置本地仓库 | 认识工作区、暂存区、版本库、对象库 | add和commit操作

目录 1.创建Git本地仓库 1.1创建仓库 1.2创建和初始化Git本地仓库 1.3查看隐藏目录.git 2.配置本地仓库 2.1新增配置 2.2删除重置配置 2.3查看配置选项 2.4全局范围的新增和删除配置 3.工作区、暂存区、版本库、对象库 ​4.add操作和commit操作 4.1add操作 4.2com…

labelme 标注检查经验

1. python labelImg.py D:\BaiduNetdiskDownload\yoloDt_qiuyi_num\yoloDt_qiuye_num\train\images D:\BaiduNetdiskDownload\yoloDt_qiuyi_num\yoloDt_qiuye_num\train\labels\classes.txt 2. 目录另存为会找到classes.txt的类&#xff0c;然后标注起来。

idm站点抓取可以用来做什么 idm站点抓取能抓取本地网页吗 idm站点抓取怎么用 网络下载加速器

在下载工具众多且竞争激烈的市场中&#xff0c;Internet Download Manager&#xff08;简称IDM&#xff09;作为一款专业的下载加速软件&#xff0c;仍然能够赢得众多用户的青睐&#xff0c;这都要得益于它的强大的下载功能。我们在开始使用IDM的时候总是有很多疑问&#xff0c…

链接服务器“XX”的OLEDB访问接口“MSOLEDBSQL”返回了消息“登录超时已过期” 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 出现如下问题: 与链接服务器的测试连接失败。执行Transact-SQL 语句或批处理时发生了异常。命名管道提供程序:无法打开与SQL SERVER的链接[53]链接服务器“XX”的OLEDB访问接口“MSOLEDBSQL”返回了消息“登录超时已过期…

从0到1搭建数据中台(2):数据中台架构

参考&#xff1a; 大数据中台架构以及建设全流程一&#xff08;Paas层设计&#xff09; 大数据中台架构以及建设全流程二&#xff08;Daas层设计&#xff09;

rocket mq保证消息幂等性

在互联网应用中&#xff0c;尤其在网络不稳定的情况下&#xff0c;消息队列 RocketMO 的消息有可能会出现重复&#xff0c;这个重复简单可以概括为以下情况: 1、发送时消息重复 当一条消息已被成功发送到服务端并完成持久化&#xff0c;此时出现了网络闪断或者客户端宕机&…

IntelliJ IDEA中刷新Git分支数据:操作指南与命令详解

前言 在软件开发过程中&#xff0c;频繁地与Git仓库交互是常态&#xff0c;确保本地分支信息与远程仓库保持同步至关重要。IntelliJ IDEA作为一款强大的集成开发环境&#xff0c;提供了直观的图形界面和终端命令行两种方式来帮助开发者高效地管理Git分支。本文将详细介绍如何在…

单词间隔重复算法

间隔重复算法 理论背景 遗忘曲线是一种描述记忆遗忘率的模型&#xff0c;艾宾浩斯在其著作《记忆&#xff1a;实验心理学的贡献》中首次详细描述了遗忘曲线&#xff0c;他使用了一些无意义的字母组合作为记忆对象&#xff0c;通过在不同的时间间隔后检查记忆的遗忘程度&#…

Android列表控件的属性与用法

列表控件的属性与用法 列表控件有Spinner、ListView、RecyclerView、ViewPager等。列表控件的显示一般涉及3个部分&#xff1a;控件、适配器、数据&#xff0c;这三者之间的关系如图1所示。适配器是数据与列表之间的桥梁&#xff0c;适配器中需要将数据中需要显示的属性与列表…

Python(四)---序列

文章目录 前言1.列表1.1.列表简介1.2.列表的创建1.2.1.基本方式[]1.2.2.list()方法1.2.3.range()创建整数列表1.2.4.推导式生成列表 1.3. 列表各种函数的使用1.3.1.增加元素1.3.2.删除元素1.3.3.元素的访问和计数1.3.4.切片1.3.5.列表的排序 1.4.二维列表 2.元组2.1.元组的简介…

智慧营区人员考勤管理系统|DW-S406系统实现无感考勤

智慧营区人员管理系统&#xff08;DW-S406系统&#xff09;通过建设人员基本信息管理功能&#xff0c;实现人力资源可视化、规范化管理&#xff0c;使人力资源管理工作决策的高效化、制度化得到有力保障&#xff0c;真正达到集中管理、集权管理的目标。主要实现营区人员管理、访…

对接高德开放平台API

高德开放平台API&#xff1a; https://lbs.amap.com/ 一、天气查询 天气查询: https://lbs.amap.com/api/webservice/guide/api/weatherinfo adcode城市码表下载: https://lbs.amap.com/api/webservice/download Component public class WeatherUtil {Resourceprivate GdCon…

【实践分享】深度学习远程连接GPU

目录 前言 一、创建实例 二、上传文件 三、服务器上传 四、运行代码文件 经验之谈 前言 1、使用平台&#xff1a;恒源云 2、教程总结自B站大佬Larry同学发布的教程视频 一、创建实例 通俗&#xff1a;租用一台临时的电脑&#xff0c;电脑可自选GPU型号等&#xff0c;…

MyBatis框架学习笔记(三):MyBatis重要文件详解:配置文件与映射文件

1 mybatis-config.xml-配置文件详解 1.1 说明 &#xff08;1&#xff09;mybatis 的核心配置文件(mybatis-config.xml)&#xff0c;比如配置 jdbc 连接信息&#xff0c;注册 mapper 等等都是在这个文件中进行配置,我们需要对这个配置文件有详细的了解 &#xff08;2&#x…

这些免费看电视的直播软件,还能免费追剧的app,需要的收藏!

想看中央台和地方卫视的电视直播app有什么呢&#xff1f;支持手机和智能电视的电视直播软件有哪些&#xff1f;今天要跟大家聊聊那些让人眼前一亮的电视直播软件&#xff0c;特别是2024年还能免费看电视直播的神器&#xff0c;让家里的老人也能享受到精彩的电视节目&#xff0c…

双指针练习

删除有序数组中的重复项 LeetCode地址&#xff1a;26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; public int removeDuplicates(int[] nums) {int p10,p21;while (p2<nums.length){if (nums[p1]nums[p2]){p2;}else {nums[p1]nums[p2];}}return p11;}…

Java 基础-语法-运算符

Java 基础-语法-运算符 概述 种类举例作用算术运算符​​&#xff1a;加法-​&#xff1a;减法*​&#xff1a;乘法/​&#xff1a;除法%​&#xff1a;取模&#xff08;取余数&#xff09;用于执行基本的数学运算增量运算符​​&#xff1a;递增--​&#xff1a;递减用于递增…