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.rhkb.cn/news/237731.html

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

相关文章

c++多久会被Python或者新语言取代?

c多久会被Python或者新语言取代&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&am…

多传感器融合SLAM数学学习历程

多传感器融合SLAM数学学习历程 >>> 流形和流形空间&#xff08;姿态&#xff09; https://blog.csdn.net/professor_Xie/article/details/131911894 fast-lio 带着问题 看知识 欧式空间和流形空间的区别和联系? 基本结构&#xff1a;欧式空间是我们熟悉的传统三维…

机器学习笔记:时间序列异常检测

1 异常类型 1.1 异常值outlier 给定输入时间序列&#xff0c;异常值是时间戳值其中观测值与该时间序列的期望值不同。 1.2 波动点&#xff08;Change Point&#xff09; 给定输入时间序列&#xff0c;波动点是指在某个时间t&#xff0c;其状态在这个时间序列上表现出与t前后…

jmeter如何做接口测试?

Jmeter介绍&测试准备&#xff1a; Jmeter介绍&#xff1a;Jmeter是软件行业里面比较常用的接口、性能测试工具&#xff0c;下面介绍下如何用Jmeter做接口测试以及如何用它连接MySQL数据库。 前期准备&#xff1a;测试前&#xff0c;需要安装好Jmeter以及jdk并配置好jdk环…

STM32 1位共阳极数码管

数码管分为共阳极和共阴极&#xff0c;即多个二极管的同一端接到GND/Vss&#xff08;若一起接到GND&#xff0c;则称为共阴极。若一起接到Vss&#xff0c;则称为共阳极&#xff09; 把数码管上的每个二极管一次标号对应a,b,c,d,e,f,g,dp。我们知道发光二极管一端正一端负&#…

学习redis有效期和数据类型

1、安装redis和连接redis 参考&#xff1a;ubuntu安装单个redis服务_ubuntu redis单机版安装-CSDN博客 连接redis&#xff1a;redis-cli.exe -h localhost -p 6379 -a 123456 2、Redis数据类型 以下操作我们在图形化界面演示。 2.1、五种常用数据类型介绍 Redis存储的是key…

小米数据恢复软件:如何从小米手机恢复已删除的数据

“买一部小米手机&#xff0c;送一个移动硬盘”。人们惊叹于小米手机以非常合理的价格提供的大容量。我们甚至可以把小米手机当做一个移动硬盘来使用&#xff0c;存储大量的照片、视频、文档等文件。但是&#xff0c;在我们使用手机的过程中&#xff0c;误删的情况时有发生&…

STM32学习笔记二十二:WS2812制作像素游戏屏-飞行射击游戏(12)总结

至此&#xff0c;飞行射击游戏已经基本实现该有的功能&#xff0c;已经比较接近早期的商业游戏了。 如果采用脚本&#xff0c;可以完成关卡游戏&#xff0c;如果不用&#xff0c;也可以做成无限挑战游戏。 我们汇总一下制作的过程&#xff1a; 1、建模UML 2、主循环处理过程…

大数据仓库开发规范示例

大数据仓库开发规范示例 一、前提概要二、数仓分层原则及定义2.1 数仓分层原则2.2 数仓分层定义 三、数仓公共开发规范3.1 分层调用规范3.2 数据类型规范3.3 数据冗余规范3.4 NULL字段处理规范3.5 公共字段规范3.6 数据表处理规范3.7 事实表划分规范 四、数仓各层开发规范4.1 分…

关于浏览器缓存的一些坑记录

1.js强制刷新浏览器缓存 网络上一搜基本都说用location.reload(true)可以强制刷新缓存&#xff0c;但是没人讲这个方法只准对火狐浏览器生效,火狐浏览器的确可以实现强制刷新并每次请求都是新的没有走缓存&#xff1b;chrome依然是走200 状态 缓存。 MDN解析&#xff1a; 2.m…

带你拿捏SpringBoot自动装配的核心技术?模块装配(@EnableXXX注解+@Import)+ 条件装配(@ConditionalXXX)

文章目录 Profile激活指定配置文件主配置文件中指定激活的profile命令行激活设置虚拟机参数激活 profile控制不到的地方 Spring原生的条件装配注解ConditionalConditional接口讲解案例讲解 Spring Boot封装的条件装配注解ConditionalXXX自己实现ConditionalOnBeanSpringBoot 源…

最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了

OpenAI推出的两款新产品和服务&#xff1a;GPT Store和ChatGPT Team&#xff0c;提供了许多全新的解决方案和功能&#xff0c;旨在帮助用户更轻松地使用和构建GPT工具&#xff0c;同时也增加了公司的收入来源。GPT Store是一个全新的在线平台&#xff0c;允许用户创建和分享自定…

MyBatis实战指南(二):工作原理与基础使用详解

MyBatis是一个优秀的持久层框架&#xff0c;它支持定制化SQL、存储过程以及高级映射。那么&#xff0c;它是如何工作的呢&#xff1f;又如何进行基础的使用呢&#xff1f;本文将带你了解MyBatis的工作原理及基础使用。 一、MyBatis的工作原理 1.1 MyBatis的工作原理 工作原理…

论文阅读1---OpenCalib论文阅读之factory calibration模块

前言 该论文的标定间比较高端&#xff0c;一旦四轮定位后&#xff0c;可确定标定板与车辆姿态。以下为本人理解&#xff0c;仅供参考。 工厂标定&#xff0c;可理解为车辆相关的标定&#xff0c;不涉及传感器间标定 该标定工具不依赖opencv&#xff1b;产线长度一般2.5米 Fa…

Python基础知识:整理9 文件的相关操作

1 文件的打开 # open() 函数打开文件 # open(name, mode, encoding) """name: 文件名&#xff08;可以包含文件所在的具体路径&#xff09;mode: 文件打开模式encoding: 可选参数&#xff0c;表示读取文件的编码格式 """ 2 文件的读取 文…

Find My资讯|AirTag 2或推迟上市,Find My功能十分强大

苹果于 2021 年4月推出了初代 AirTag。苹果已将第二代 AirTag 的推出推迟到 2025 年&#xff0c;目前苹果官方并不急于推出AirTag 2的原因还有AirTag所搭载的搜寻定位功能非常的强大&#xff0c;在市场上几乎没有任何竞争对手可言。 AirTag使用蓝牙和苹果设备的“查找我的”网…

Redis命令 - Lists命令组常用命令

先创建一个 key 叫做 mylist&#xff0c;mylist存一个list。 list数据类型底层是一个链表。先进后出&#xff0c;后进先出。 命令中的L&#xff08;Left&#xff09;、R&#xff08;Right&#xff09;代表链表的头部L&#xff08;下标0的位置&#xff09;和尾部R&#xff08;…

uni-app分包预下载

模块的二级页面&#xff0c;按模块处理成分包页面&#xff0c;有以下好处&#xff1a; 按模块管理页面&#xff0c;方便项目维护。减少主包体积&#xff0c;用到的时候再加载分包&#xff0c;属于性能优化解决方案。 ::: tip 温馨提示 通过 VS Code 插件 uni-create-view 可…

AI与编程学习

在C语言中&#xff0c;指针通常与字符数组或字符串打交道时会涉及到ASCII码的转换&#xff0c;而不是用于表现多位数的第一位。48这个值对应的是ASCII码表中数字字符0的编码。 如果你有一个表示多位数的字符数组&#xff0c;例如&#xff1a; c char number[] "1234&qu…

TortoiseSVN·文件锁定与清理

安装 TortoiseSVN 的时候&#xff0c;选择 svn 命令可用, 选择 will be intalled on local hard drive 。 在锁定的文件夹内 cmd 进入终端&#xff0c;输入 find . -type f -name ".svn/lock" -exec rm -f {} \; 删除所有锁定文件。进行清理操作&#xff1a;svn clea…