第三周周三总结

1.给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

class Solution {

    public int reverse(int x) {

        int res = 0;

        while(x!=0) {

            //每次取末尾数字

            int tmp = x%10;

            //判断是否 大于 最大32位整数

            if (res>214748364 || (res==214748364 && tmp>7)) {

                return 0;

            }

            //判断是否 小于 最小32位整数

            if (res<-214748364 || (res==-214748364 && tmp<-8)) {

                return 0;

            }

            res = res*10 + tmp;

            x /= 10;

        }

        return res;

    }

}          

循环的判断条件应该是while(x!=0),无论正数还是负数,按照上面不断的/10这样的操作,最后都会变成0,所以判断终止条件就是!=0
 

假设有1147483649这个数字,它是小于最大的32位整数2147483647的,但是将这个数字反转过来后就变成了9463847411,这就比最大的32位整数还要大了,这样的数字是没法存到int里面的,所以肯定要返回0(溢出了)。
甚至,我们还需要提前判断

2.

给你一个下标从 0 开始的整数数组 enemyEnergies ,它表示一个下标从 0 开始的敌人能量数组。

同时给你一个整数 currentEnergy ,它表示你一开始拥有的能量值总量。

你一开始的分数为 0 ,且一开始所有的敌人都未标记。

你可以通过以下操作 之一 任意次(也可以 0 次)来得分:

  • 选择一个 未标记 且满足 currentEnergy >= enemyEnergies[i] 的敌人 i 。在这个操作中:
    • 你会获得 1 分。
    • 你的能量值减少 enemyEnergies[i] ,也就是说 currentEnergy = currentEnergy - enemyEnergies[i] 。
  • 如果你目前 至少 有 1 分,你可以选择一个 未标记 的敌人 i 。在这个操作中:
    • 你的能量值增加 enemyEnergies[i] ,也就是说 currentEnergy = currentEnergy + enemyEnergies[i] 。
    • 敌人 i 被标记 。

请你返回通过以上操作,最多 可以获得多少分。

示例 1:

输入:enemyEnergies = [3,2,2], currentEnergy = 2

输出:3

解释:

通过以下操作可以得到最大得分 3 分:

  • 对敌人 1 使用第一种操作:points 增加 1 ,currentEnergy 减少 2 。所以 points = 1 且 currentEnergy = 0 。
  • 对敌人 0 使用第二种操作:currentEnergy 增加 3 ,敌人 0 被标记。所以 points = 1 ,currentEnergy = 3 ,被标记的敌人包括 [0] 。
  • 对敌人 2 使用第一种操作:points 增加 1 ,currentEnergy 减少 2 。所以 points = 2 且 currentEnergy = 1 ,被标记的敌人包括[0] 。
  • 对敌人 2 使用第二种操作:currentEnergy 增加 2 ,敌人 2 被标记。所以 points = 2 ,currentEnergy = 3 且被标记的敌人包括 [0, 2] 。
  • 对敌人 1 使用第一种操作:points 增加 1 ,currentEnergy 减少 2 。所以 points = 3 ,currentEnergy = 1 ,被标记的敌人包括 [0, 2] 。

    class Solution {

    public:

        long long maximumPoints(vector<int>& enemyEnergies, int currentEnergy) {

            int mn = ranges::min(enemyEnergies);

            if (currentEnergy < mn) {

                return 0;

            }

            long long s = reduce(enemyEnergies.begin(), enemyEnergies.end(), 0LL);

            return (currentEnergy + s - mn) / mn;

        }

    };

    设 enemyEnergies 中的最小值为 mn,元素和为 s。

    如果 currentEnergy<mn,那么操作一无法执行,无法得到任何分数,所以也无法执行操作二,返回 0。

    否则,操作顺序如下:

    对 mn 执行操作一,得到 1 分。
    对除了 mn 以外的敌人执行操作二,得到 s−mn 的能量。
    对 mn 执行操作一,直到能量不足。
    也可以理解为,先得到 s−mn 的能量,再不断对 mn 执行操作一,所以得分为

  • (currentEnergy+s-mn)/mn
    3.
     

    给你一个整数数组 nums 和一个链表的头节点 head。从链表中移除所有存在于 nums 中的节点后,返回修改后的链表的头节点。

    示例 1:

    输入: nums = [1,2,3], head = [1,2,3,4,5]

    输出: [4,5]

    解释:

    移除数值为 1, 2 和 3 的节点。

    示例 2:

    输入: nums = [1], head = [1,2,1,2,1,2]

    输出: [2,2,2]

    解释:

    移除数值为 1 的节点。
     

    class Solution {

    public:

        ListNode* modifiedList(vector<int>& nums, ListNode* head) {

            unordered_set<int> st(nums.begin(), nums.end());

  • //这行代码创建了一个名为st的unordered_set(无序集合)。unordered_set是C++标准库中的一种容器,它存储唯一的元素,且元素的顺序不重要(无序)。这里使用了一个迭代器区间nums.begin()到nums.end()来初始化unordered_set。这意味着,st将包含nums中所有不重复的整数元素。

            ListNode dummy(0, head);
  • //这行代码创建了一个名为dummy的链表节点对象。链表节点在C++中通常用来构建链表数据结构。dummy节点的构造函数参数是(0, head),这意味着它是一个带有两个参数的构造函数:第一个参数是一个整数0,第二个参数是一个指向链表头节点的指针head(假设head是已经定义的某个节点指针)。

            ListNode* cur = &dummy;

            while (cur->next) {

                if (st.contains(cur->next->val)) {

                    cur->next = cur->next->next; // 删除

                } else {

                    cur = cur->next; // 向后移动

                }

            }

            return dummy.next;

        }

    };

java总结
 

final 关键字可用于修饰类、变量和方法 , 用于表示它修饰的类、方法和变量不可改变。 final 修饰变量时,表示该变量一旦获得了初始值就不可被改变.

final 既可以修饰成员变量, 也可以修饰局部变量、形参。 final 修饰的变量不可被改变, 一旦获得了初始值 , 该 final 变量的值就不能被重新赋值。

变量

成员变量

对于 final 修饰的成员变量而言,一旦有了初始值,就不能被重新赋值,如果既没有在定义成员变量时指定初始值,也没有在初始化块、构造器中为成员变量指定初始值,

那么这些成员变量的值将一直是系统默认分配的 0、‘\uOOOO' 、 false 或 null , 这些成员变量也就完全失去了存在的意义。

因此 Java 语 法规定 : final 修饰的成员变量必须由程序员显式地指定初始值。

归纳起来, final 修饰的类变量、实例变量能指定初始值的地方如下。

类变量 : 必须在静态初始化块中指定初始值或声明该类变量时指定初始值,而且只能在两个地方的其中之一指定。

实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值, 而且只能在三个 地方的其中之一指定。

局部变量

系统不会对局部变量进行初始化,局部变量必须由程序员显式初始化 。

因此使用 自final修饰局部变量时,既可以在定义时指定默认值,也可以不指定默认值。

如果 final 修饰的局部变量在定义时没有指定默认值,则可以在后面代码中对该 final 变量赋初始值, 但只能一次 ,不能重复赋值;

如果 final 修饰的局部变量在定义时己经指定默认值,则后面代码中不能在对该变量赋值

pub1ic c1ass Test
{
pub1ic void test(final int a ) 
{//不能对 fina1 修饰的形参赋值,下面语句非法a = 5;
}
pub1ic static void main(String[] args) 
{
//定义final局部变量时指定默认值,str 变量无法重新赋值
final String str = "hello" ; 
//下面赋值语句非法
str = " Java"; 
//定义final局部变量时没有指定默认值,d变量可被赋值一次
final double d ; 
//第一次赋初始值成功
d = 5.6; 
//对final变量重复赋值,下面语句非法
d = 3.4; 
}
}
引用变量

使用 final 修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。 但对于引用类型变量而言 ,它保存的仅仅是一个引用,fina l 只保证这个引用类型变量所引用的地址不 会改变。

pub1ic c1ass Test
{
pub1ic static void main(String[] args)
{
//final修饰数组变量,iArr是一个引用变量
fina1 int[] iArr = {5,6,12,9}; 
//对数组元素进行排序,合法
Arrays.sort(iArr);  
//对数组元素赋值,合法
iArr[2] = - 8 ;  
//下面语句对 iArr 重新赋值,非法
iArr = null; 
//final修饰 Person变量,p 是一个引用变量
final Persoηp =new Person(45) ; 
//改变 Person对象的age实例变量,合法
p.setAge(23) ; 
//下面语句对 p 重新赋值,非法p = null; }}

使用 final 修饰的引用类型变量不能被重新赋值,但可以改变引用类型变 量所引用对象的内容 .

例如上面iArr 变量所引用的数组对象, final修饰后的 iArr变量不能被重新赋值, 但iArr所引用数组的数组元素可以被改变.

与此类似的是,p变量也使用了 fina l 修饰,表明 p 变量不能被重新赋值 , 但p变量所引用 Person 对象的成员变量的值可以被改变。

方法

final 修饰的方法不可被重写 ,如果出于某些原因,不希望子类重写父类的某个方法,则可以使用final修饰该方法。

public class Test
{
public final void test(){} 
}
class Sub extends Test
{
//下面方法定义将出现编译错误,不能重写 final 方法
public void test() {} 
}

用final 修饰一个 private访问权限的方法,依然可以在其子类中定义与该方法具有相同方法名、相同形参列表、相同返回值类型的方法,等同于重新写了个方法。此外被final修饰的方法可以进行重载。

final修饰的类不可以有子类.

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

RuoYi-后端管理项目入门篇1

目录 前提准备 下载若依前后端 Gitee 地址 准备环境 后端数据库导入 1 克隆完成 若依后端管理后端 Gitte 地址 :若依/RuoYi-Vue 2.1 创建Data Source数据源 2.2 填写好对应的数据库User 和 Password 点击Apply 2.3 新建一个Schema 2.4 填写对应数据库名称 这边演示写的…

【I²C协议】STC89C51单片机IIC通信(代码+原理)

STC89C51单片机IIC通信 什么是IC协议特点构成 通信协议开始信号、结束信号、应答信号数据传输 代码示例 什么是IC协议 IIC,即IC&#xff0c;全称 Inter-Integrated Circuit&#xff0c;字面上的意思是集成电路之间&#xff0c;它其实是IC Bus简称&#xff0c;所以中文应该叫 集…

【Codeforces】Round 957 (Div. 3)_B. Angry Monk

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法刷题 &#x1f43e;或许会很慢&#xff0c;但是不可以停下来&#x1f43e; 文章目录 题目题解try1代码正确题解贪心策略的解释为什么不是直接合并 总结 题目 题目链接 题解 try1代码 我的思路&#xff1a;单纯模拟 循环&a…

【字幕】字幕特效入门

前言 最近两周调研了一下字幕特效的底层程序逻辑&#xff0c;因为工作内容的原因&#xff0c;就分享几个自己找的链接具体细节就不分享了&#xff0c;CSDN也是我的个人笔记&#xff0c;只记录一些简单的内容用于后续自己方便查询&#xff0c;顺便帮助一下正在苦苦查阅资料入门…

基于STC89C51单片机的烟雾报警器设计(煤气火灾检测报警)(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于STC89C51单片机的烟雾报警器设计的详情介绍&#xff0c;如果对您有帮助的话&#xff0c;还请关注一下哦&#xff0c;如果有资源方面的需要可以联系我。 目录 摘要 原理图 实物图 仿真图 元件清单 代码 系统论文 资源下载 摘要 随着现代家庭用火、…

【高中数学/指数函数、幂函数】寻找曲线y=2^x与y=x^2的三个交汇点

【问题】 找到曲线y2^x与yx^2的三个交汇点。 【难点】 指数和二次函数摆在一起没法求解。 【解答】 y2^x与yx^2的交汇点&#xff0c;即曲线y2^x-x^2的零点&#xff0c;用Canvas作图就能清晰看到三个零点的存在&#xff0c;如图。 【图一】 其中&#xff0c;2&#xff0c;…

自制连点器

B站使用教程&#xff1a;https://www.bilibili.com/video/BV1SR85e4EKw/?vd_source47eba1800d831e86d4778a128740fe73 下载链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1Spv_yVPFB3zoS__VL-nhaQ?pwdyxo1 提取码&#xff1a;yxo1

排序算法(4)之快速排序(1)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 排序算法(4)之快速排序(1) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…

langchain循序渐进之langchain 安装及使用

pip安装langchain pip install langchain安装langsmith(可选) langsmith官方提示是用来观察大模型复杂调用情况&#xff0c;可选项。 [LangSmith]点击注册然后把秘钥填进去就行&#xff0c;这里我略过了 export LANGCHAIN_TRACING_V2"true" export LANGCHAIN_A…

【C++】模版初阶以及STL的简介

个人主页~ 模版及STL 一、模版初阶1、泛型编程2、函数模版&#xff08;1&#xff09;概念&#xff08;2&#xff09;函数模版格式&#xff08;3&#xff09;函数模版的原理&#xff08;4&#xff09;函数模版的实例化①显式实例化②隐式实例化 &#xff08;5&#xff09;模版参…

精益六西格玛项目赋能,石油机械龙头企业质量效率双提升!

​国内某石油机械制造龙头&#xff0c;迎接挑战&#xff0c;迈向卓越&#xff0c;携手张驰咨询&#xff0c;启动精益六西格玛项目&#xff0c;开启管理革新新篇章。 在国家政策调整和市场竞争日益激烈的背景下&#xff0c;作为国内石油机械产品制造领域的龙头企业&#xff0c;…

算法 —— LRU算法

算法 —— LRU算法 LRULRU算法的工作原理&#xff1a;实现方法&#xff1a;性能考虑&#xff1a; 模拟过程splice函数对于std::list和std::forward_list基本语法&#xff1a;功能描述&#xff1a; 示例&#xff1a;注意事项&#xff1a; 如果大家已经学习过了Cache的替换算法和…

Linux——Shell脚本和Nginx反向代理服务器

1. Linux中的shell脚本【了解】 1.1 什么是shell Shell是一个用C语言编写的程序&#xff0c;它是用户使用Linux的桥梁 Shell 既是一种命令语言&#xff0c;有是一种程序设计语言 Shell是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问…

开放式耳机2024哪家品牌比较好?2024年爆火开放式耳机推荐

很多小伙伴在后台私信我&#xff0c;滴滴我说&#xff0c;最近开放式耳机这么火&#xff0c;他也想要入手一台问问我&#xff0c;有哪些开放式耳机值得现在入手的&#xff0c;作为一个尽职尽业的数码博主&#xff0c;我本来是一个个回复的&#xff0c;但是私信没想到这么多&…

[C++初阶]list的模拟实现

一、对于list的源码的部分分析 1.分析构造函数 首先&#xff0c;我们一开始最先看到的就是这个结点的结构体&#xff0c;在这里我们可以注意到这是一个双向链表。有一个前驱指针&#xff0c;一个后继指针。然后在有一个存储数据的空间 其次它的迭代器是一个自定义类型&#x…

pyinstall 打包基于PyQt5和PaddleOCR的项目为.exe

简介&#xff1a; 最近做了一个小项目&#xff0c;是基于PyQt5和PaddleOCR的。需要将其打包为.exe&#xff0c;然后打包过程中遇到了很多问题&#xff0c;也看了很多教程&#xff0c;方法千奇百怪的&#xff0c;最后也是一步一步给试出来了。记录一下&#xff0c;防止以后忘记…

CSS基础学习之元素定位(6)

目录 1、定位类型 2、取值 2.1、static 2.2、relative 2.3、absolute 2.4、fixed 2.5、stickty 3、示例 3.1、相对定位(relative) 3.2、绝对定位&#xff08;absolute&#xff09; 3.3、固定定位&#xff08;fixed&#xff09; 3.4、粘性定位&#xff08;sticky&…

智慧互联新时代,Vatee万腾平台引领行业变革

在科技日新月异的今天&#xff0c;我们正步入一个前所未有的智慧互联新时代。这个时代&#xff0c;信息如潮水般涌来&#xff0c;数据成为新的石油&#xff0c;驱动着各行各业发生深刻变革。在这场变革的浪潮中&#xff0c;Vatee万腾平台以其卓越的智慧互联技术和前瞻性的战略布…

vue3前端开发-执行npm run dev提示报错怎么解决

vue3前端开发-执行npm run dev提示报错怎么解决&#xff01;今天在本地安装初始化了一个vue3的案例demo。但是当我执行npm run dev想启动它时报错了说&#xff0c;找不到dev。让我检查package.json文件是否包含dev。如下图所示&#xff1a; 实际上&#xff0c;不必惊慌&#xf…

2024全球和国内最常用的弱密码,有没有你的?

密码管理器NordPass分析了来自公开来源的超过4.3TB 的密码数据&#xff0c;找出了当前为止&#xff08;2024年&#xff09;最常用&#xff08;最脆弱&#xff09;的密码。 这些密码主要有下面这些特征&#xff1a; 简单且常用&#xff0c;万年弱密码&#xff0c;比如123456、a…