LeetCode-1822/1502/896/13

1.数组元素积的符号(1822)

题目描述:

已知函数 signFunc(x) 将会根据 x 的正负返回特定值:

如果 x 是正数,返回 1 。
如果 x 是负数,返回 -1 。
如果 x 是等于 0 ,返回 0 。
给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。

返回 signFunc(product) 。
在这里插入图片描述
思路: 这题比较简单,只需要初始设置一个变量为1,然后遍历数组,数组元素为正不操作,为0则直接返回0,为负则给设置的遍历乘以-1,最终返回该变量即可。但是这里要注意题目中谈到了signFunc函数,不过它实现起来也很简单。

代码:

class Solution {public int arraySign(int[] nums) {int sum=1;for(int i=0;i<nums.length;i++) {if(nums[i]==0) {return signFunc(nums[i]);} else if(nums[i]<0) {sum*=signFunc(nums[i]);}}return signFunc(sum);}public int signFunc(int n) {if(n<0) {return -1;} else if(n==0) {return 0;} else {return 1;}}
}

2.判断能否形成等差数列(1502)

题目描述:

给你一个数字数组 arr 。

如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。

如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。
在这里插入图片描述
思路: 这里首先通过位置0与位置1元素的差得到差值,然后遍历数组,计算相邻两个元素的差,如果有一个差值不等于开始计算的差值,则直接返回false;

代码:

class Solution {public boolean canMakeArithmeticProgression(int[] arr) {Arrays.sort(arr);int val=arr[1]-arr[0];for(int i=1;i<arr.length-1;i++) {if(val!=(arr[i+1]-arr[i])) {return false;}}return true;}
}

3.单调数列(896)

题目描述:

如果数组是单调递增或单调递减的,那么它是 单调 的。

如果对于所有 i <= j,nums[i] <= nums[j],那么数组 nums 是单调递增的。 如果对于所有 i <= j,nums[i]> = nums[j],那么数组 nums 是单调递减的。

当给定的数组 nums 是单调数组时返回 true,否则返回 false。
在这里插入图片描述
思路一: 首先要得到第二个元素和第一个元素的差,这样我们才可以进行后续的判断,如果是正数则该数组可能单增,如果是负数则该数组可能单减。但是要注意一个问题,如果首部的元素都是相等的那么这种方法就适用不了了?还是可以的,只要加一个while循环遍历到不相等的数即可。得到差值后分两种情况,差值大于0的情况,用一个for循环不断得到相邻元素差值,如果有一个差值小于0返回false。差值小于0情况同理,有一个差值大于0返回false。如果没出现上述的false情况就返回true。

思路二: 因为数组不是单增就是单减,我们建立两个布尔型变量初始值设为true分别记录单增和单减的情况。使用一个循环对数组进行遍历,如果出现差值为负则将一个变量设为false,同理如果出现差值为正则将另一个变量设为false。然后遍历完成最后返回两个布尔型变量的||即可。具体看代码。

代码:

class Solution {public boolean isMonotonic(int[] nums) {return isMonotonic2(nums);}public boolean isMonotonic1(int[] nums) {if(nums.length==1) {return true;}boolean flg=true;int k=1;while(k<nums.length&&nums[0]==nums[k]) {k++;}if(k==nums.length) {return true;}if(nums[k]-nums[0]>0) {for(int i=1;i<nums.length;i++) {if(nums[i]-nums[i-1]<0) {flg=false;}}} else if(nums[k]-nums[0]<0){for(int i=1;i<nums.length;i++) {if(nums[i]-nums[i-1]>0) {flg=false;}}}return flg;}public boolean isMonotonic2(int[] nums) {boolean inc=true,der=true;for(int i=1;i<nums.length;i++) {if(nums[i]-nums[i-1]<0) {inc=false;}if(nums[i]-nums[i-1]>0) {der=false;}}return inc||der;}
}

4.罗马数字转整数(13)

题目描述:

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。
在这里插入图片描述
思路: 这里的思路是从左至右来处理这个字符串,设置返回数sum初值为0,如果遇到V L D M则直接在sum上加上相应的值。如果遇到I 则要判断下一个字母是否为V 或 X,如果是则加上4或9并且索引要多加一位,因为这里一次性处理掉了两个字符,如果下一个字母不是V或X则直接在sum上加上1就行。至于遇到X C与这里遇到I的处理是一致的不多赘述,具体看代码。

代码:

class Solution {public int romanToInt(String s) {int len=s.length();int sum=0;for(int i=0;i<len;i++) {switch(s.charAt(i)) {case 'I':if(i+1<len&&s.charAt(i+1)=='V') {sum+=4;i++;} else if(i+1<len&&s.charAt(i+1)=='X') {sum+=9;i++;} else {sum+=1;}break;case 'V':sum+=5;break;case 'X':if(i+1<len&&s.charAt(i+1)=='L') {sum+=40;i++;} else if(i+1<len&&s.charAt(i+1)=='C') {sum+=90;i++;} else {sum+=10;}break;case 'L':sum+=50;break;case 'C':if(i+1<len&&s.charAt(i+1)=='D') {sum+=400;i++;} else if(i+1<len&&s.charAt(i+1)=='M') {sum+=900;i++;} else {sum+=100;}break;case 'D':sum+=500;break;case 'M':sum+=1000;break;}}return sum;}
}

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

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

相关文章

详解java中ArrayList

目录 前言 一、ArrayList是什么 二、ArrayList使用 1、ArrayList的构造 2 、ArrayList常见操作 3、 ArrayList的遍历 4、 ArrayList的扩容机制 三、来个练习 前言 当你看到这篇文章我觉得很好笑&#xff0c;因为我开始也不懂ArrayList现在轮到你了&#xff0c;嘻嘻嘻&am…

Redis面试篇

redis面试题主要内容 面试官在面试时主要会问以下这些方面的问题 下面是一些问题示例&#xff1a; redis-使用场景 缓存 缓存穿透 介绍 缓存穿透&#xff1a;查询一个不存在的数据&#xff0c;mysql查询不到数据也不会直接写入缓存&#xff0c;就会导致每次请求都会去查数…

001讲:CAD对话框出现乱码解决方案——CAD知识讲堂

CAD对话框中字体乱码的解决办法&#xff1a; 删掉CAD安装文件目录font字体库的 simsun.ttc 文件&#xff0c;然后彻底关闭CAD&#xff0c;重新打开cad即可解决问题。 如果还不行&#xff0c;对话框出现乱码原来是拷贝CAD字体中存在.TTC和*.TTF格式文件的问题&#xff0c;找到ca…

Redis未授权访问漏洞复现与工具安装

目录 一、漏洞简介 二、靶场搭建 三、漏洞检测 四、工具安装 五、远程连接 六、利用Redis写入webshell 七、redis-getShell工具 八、ssh公私钥免密登录 九、其他 一、漏洞简介 redis是一个数据库&#xff0c;默认端口是6379&#xff0c;redis默认是没有密码验证的&…

了解Python中的requests.Session对象及其用途

前言 在Python的网络编程中&#xff0c;requests库是一个非常流行的HTTP客户端库&#xff0c;用于发送各种类型的HTTP请求。在requests库中&#xff0c;requests.Session对象提供了一种在多个请求之间保持状态的方法本文将探讨Python中的requests.Session对象及其用途&#xf…

联想电脑打开视频显示禁止相机排查

场景&#xff1a; ** 原因排查&#xff1a; ** windows设置>隐私> 电脑 联想管家 > 电池管理

老生重谈:大模型的「幻觉」问题

一、什么是大模型「幻觉」 大模型的幻觉问题通常指的是模型在处理输入时可能会产生一些看似合理但实际上是错误的输出&#xff0c;这可能是因为模型在训练时过度拟合了训练数据&#xff0c;导致对噪声或特定样本的过度敏感。 "大数据幻觉"指的是在处理大规模数据时…

Type-C双盲插显示器,无需外挂MOS最简版本

在2021年5月&#xff0c;USB-IF协会破茧而出&#xff0c;发布了全新的USB PD3.1规范&#xff0c;如同凤凰涅槃&#xff0c;将快充功率上限从100 W扶摇直上至240 W。这一壮举不仅让USB PD的影响力渗透到手机、笔记本电脑的领域&#xff0c;更是将其触角延伸至了更为广阔的天地&a…

回顾2023,立2024flag

文章目录 回顾2023与CSDN相识专栏整理数据回顾 立2024flag 回顾2023 在过去的一年里&#xff0c;前端技术不断演进和创新。新技术、新框架层出不穷&#xff0c;给前端工程师提供了更多选择和挑战。2023年已经成为过去&#xff0c;回首这一年&#xff0c;我们也经历了许多挑战和…

leetcode - 2751. Robot Collisions

Description There are n 1-indexed robots, each having a position on a line, health, and movement direction. You are given 0-indexed integer arrays positions, healths, and a string directions (directions[i] is either ‘L’ for left or ‘R’ for right). Al…

python_数据可视化_pandas_导入excel数据

目录 1.1导入库 1.2读取excel文件 1.3读取excel&#xff0c;指定sheet2工作表 1.4指定行索引 1.5指定列索引 1.6指定导入列 案例速览&#xff1a; 1.1导入库 import pandas as pd 1.2读取excel文件 pd.read_excel(文件路径) data pd.read_excel(D:/desktop/TestExcel…

c语言进阶指南(17)——动态内存管理

欢迎来到博主的专栏——c语言进阶指南 博主id已更新&#xff1a; 文章目录 动态内存分配malloc动态内存的释放free其他的动态内存管理函数callocrealloc使用realloc函数调整动态内存空间使用realloc函数分配动态内存空间 动态内存分配 动态内存分配是内存分配的一种方法&#…

Python教程39:使用turtle画今天日期

---------------turtle源码集合--------------- Python教程36&#xff1a;海龟画图turtle写春联 Python源码35&#xff1a;海龟画图turtle画中国结 Python源码31&#xff1a;海龟画图turtle画七道彩虹 Python源码30&#xff1a;海龟画图turtle画紫色的小熊 Python源码29&a…

向量检索-用最简单的语言

看之前首先要懂两个基本条件&#xff1a; 1. 什么是向量 2. 会使用向量的检索 3. 知道至少一种向量的索引 这里我们拿比较的流行的HNSW算法来进行分析&#xff1a; 最直接的做法是根据向量在给定数据集中采用KNN来找到K个最近的向量。但在实际应用中&#xff0c;待检索的数据往…

14.kubernetes部署Dashboard

Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,D…

k8s的存储卷之静态

存储卷----数据卷 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的&#xff0c;delete&#xff0c;k8s用控制创建的pod&#xff0c;delete相当于重启&#xff0c;容器的状态也会回复到初始状态 一旦回到初始状态&#xff0c;所有的后天编辑的文件都会消…

Python自动化测试框架:Unittest 断言详解

断言是编程中常用的一种验证方法&#xff0c;也是测试代码中最重要的部分&#xff0c;用于验证某个条件是否为真&#xff0c;验证测试结果与预期结果是否一致。 unittest 提供了方便的断言方法&#xff0c;用于验证测试结果是否符合预期&#xff0c;若验证失败&#xff0c;则会…

leetcode 动态规划(最后一块石头的重量II、目标和、一和零)

1049.最后一块石头的重量II 力扣题目链接(opens new window) 题目难度&#xff1a;中等 有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < …

用友移动管理系统 upload任意文件上传漏洞

产品介绍 用友移动系统管理系统是用友公司推出的一款移动办公解决方案&#xff0c;旨在帮助企业实现移动办公、提高管理效率和员工工作灵活性。 漏洞描述 用友移动系统管理系统/mobsm/common/upload等接口存在任意文件上传漏洞&#xff0c;未经授权攻击者通过漏洞上传任意文…

Flutter组件GridView使用介绍

介绍 GridView 是 Flutter 中用于创建网格布局的滚动小部件。它可以创建多列布局&#xff0c;并且每个网格单元可以包含一个小部件。 GridView 提供了几种构造函数来创建不同类型的网格布局&#xff1a; GridView&#xff1a;最通用的构造函数&#xff0c;完全自定义网格布局…