力扣刷题01

简单版

  • 1. 两数求和
  • 2. 回文数
  • 3. 将整数倒转
  • 4. 罗马转整数

1. 两数求和

我用的暴力求和。

package top.bitqian.easy.two_sum;import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;/*** 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。* <p>* 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。* <p>* 你可以按任意顺序返回答案。** @author echo lovely* @date 2021/3/8 16:45*/public class DemoSum {/**输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。** */static int[] twoSum(int[] nums, int target) {int len = nums.length;for (int i = 0; i < len; i++) {int curVal = nums[i];// tips: 可以从 i + 1开始的for (int j = 0; j < len; j++) {boolean b = curVal + nums[j] == target && i != j;if (b) {return new int[]{i, j};}}}return new int[0];}public static int[] upgrade(int[] nums, int target) {Map<Integer, Integer> hashtable = new LinkedHashMap<>();for (int i = 0; i < nums.length; ++i) {if (hashtable.containsKey(target - nums[i])) {return new int[]{hashtable.get(target - nums[i]), i};}hashtable.put(nums[i], i);}return new int[0];}public static void main(String[] args) {int[] sum = twoSum(new int[]{2, 3, 10, 9, 7}, 19);System.out.println(Arrays.toString(sum));sum = twoSum(new int[]{3, 2, 4}, 6);System.out.println(Arrays.toString(sum));sum = upgrade(new int[]{2, 3, 10, 9, 7}, 12);System.out.println(Arrays.toString(sum));System.out.println("\n");sum = new int[]{1, 2, 3, 4};for (int i = 0; i < sum.length; ++i) {System.out.println(i);}}}

2. 回文数

针对于数字xxxx, 正序和反序都是一样的,称之为回文数。
使用数据结构栈解题,栈是先进后去,可以弹出来,得到相反的数,字符串比较就行了。

package top.bitqian.easy.palindrome;import java.util.Stack;/*** @author echo lovely* @date 2021/11/8 14:52* @description 回文数* https://leetcode-cn.com/problems/palindrome-number/*/public class Palindrome {public static void main(String[] args) {boolean b = isPalindrome(19091);System.out.println(b);System.out.println(upgrade(0));}// 使用栈解题public static boolean isPalindrome(int x) {if (x < 0) {return false;}String str = String.valueOf(x);Stack<String> stack = new Stack<>();for (String s : str.split("")) {stack.push(s);}String newStr = "";for (int i = stack.size() - 1; i >= 0; i--) {newStr = newStr.concat(stack.pop());}return newStr.equals(str);}/*** https://leetcode-cn.com/problems/palindrome-number/solution/hui-wen-shu-by-leetcode-solution/*/public static boolean upgrade(int x) {// 特殊情况:// 如上所述,当 x < 0 时,x 不是回文数。// 同样地,如果数字的最后一位是 0,为了使该数字为回文,// 则其第一位数字也应该是 0// 只有 0 满足这一属性if (x < 0 || (x % 10 == 0 && x != 0)) {return false;}int revertedNumber = 0;while (x > revertedNumber) {revertedNumber = revertedNumber * 10 + x % 10;x /= 10;}// 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。// 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,// 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。return x == revertedNumber || x == revertedNumber / 10;}}

3. 将整数倒转

注意整数有最大值和最小值!!!, 越界报错,用Long比较。
这里也是利用栈解决。

package top.bitqian.easy.reverse_integer;import java.util.Stack;/*** @author echo lovely* @date 2021/11/8 11:36* @description 两数反转* https://leetcode-cn.com/problems/reverse-integer/* 1. Integer.MIN_VALUE的绝对值不靠谱* 2. Integer.parseInt("9646324351") 转换过大数字, 可能出现异常*/public class ReverseInteger {public static void main(String[] args) {// the min value of integer, if you get a abs, it's will be a negative num..int val = -2147483648;int res = reverse(1534236469);System.out.println(res);// 结果是负数..System.out.println(-val);System.out.println(Math.abs((long) val));res = upgrade(val);System.out.println(res);}// 使用栈进行反转public static int reverse(int x) {if (x == 0)return x;if (x <= Integer.MIN_VALUE || x >= Integer.MAX_VALUE) {return 0;}String s = String.valueOf(Math.abs(x));Stack<String> stack = new Stack<>();for (String ele : s.split("")) {stack.push(ele);}s = "";for (int i = stack.size() - 1; i >= 0; i--) {s = s.concat(stack.pop());}// 关于证数转换问题, 如果数字超出整数范围, 会报转换错误异常。// Integer.valueOf("9646324351");// Exception in thread "main" java.lang.NumberFormatException: For input string: "9646324351"long tmp = Long.parseLong(s);boolean flag = tmp > Integer.MAX_VALUE || tmp < Integer.MIN_VALUE;if (flag) {return 0;}if (x > 0) {x = Integer.parseInt(s);return x;}x = Integer.parseInt(s);return -x;}/*** https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode-solution-bccn/*/public static int upgrade(int x) {int rev = 0;while (x != 0) {if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {return 0;}int digit = x % 10;x /= 10;rev = rev * 10 + digit;}return rev;}}

4. 罗马转整数

  1. 利用字典map存储,罗马和数字一一对应。
  2. 求出特殊的罗马数字组合,比如IV, 要用减法, IV是4
  3. 求加法的罗马数字,VI,就是6
package top.bitqian.easy.roman_to_integer;import java.util.HashMap;
import java.util.Map;/*** @author echo lovely* @date 2021/11/8 15:07* @description https://leetcode-cn.com/problems/roman-to-integer/*/public class RomanToInteger {public static void main(String[] args) {System.out.println(romanToInt("IV"));System.out.println(upgrade("XIV"));/*I             1V             5X             10L             50C             100D             500M             1000rules:I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。*/}static Map<String, Integer> paramMap = new HashMap<>();static {paramMap.put("I", 1);paramMap.put("V", 5);paramMap.put("X", 10);paramMap.put("L", 50);paramMap.put("C", 100);paramMap.put("D", 500);paramMap.put("M", 1000);}public static int romanToInt(String s) {int res = 0;String[] specArr = new String[]{"IV", "IX", "XL", "XC", "CD", "CM"};// 1. 计算指定的字符for (String ele : specArr) {if (s.contains(ele)) {res += getVal(ele);s = s.replace(ele, "");}}// 2. 计算正常相加的字符for (String ele : s.split("")) {// IV, 防止s是""if ("".equals(ele))return res;Integer val = paramMap.get(ele);res += val;}return res;}private static int getVal(String ele) {int val = 0;String[] node = ele.split("");for (String tmp : node) {Integer i = paramMap.getOrDefault(tmp, 0);val = Math.abs(val - i);}return val;}/*https://leetcode-cn.com/problems/roman-to-integer/solution/luo-ma-shu-zi-zhuan-zheng-shu-by-leetcod-w55p/*/public static int upgrade(String s) {int ans = 0;int n = s.length();for (int i = 0; i < n; ++i) {int value = symbolValues.get(s.charAt(i));if (i < n - 1 && value < symbolValues.get(s.charAt(i + 1))) {ans -= value;} else {ans += value;}}return ans;}static Map<Character, Integer> symbolValues = new HashMap<Character, Integer>() {private static final long serialVersionUID = 4834716094584504863L;{put('I', 1);put('V', 5);put('X', 10);put('L', 50);put('C', 100);put('D', 500);put('M', 1000);}};}

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

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

相关文章

属性被分为八大类不包括_家庭软装八大类有哪些 软装八大类风格有什么特点...

软装就是西方基本装修的硬装完工之后&#xff0c;放置的一些家具以及装饰用品&#xff0c;那么在家装中软装八大类有哪些呢?下面就和郑州装修网小编一起来了解下吧。软装八大类有哪些软装八大类指的是&#xff1a;家具、灯具、布艺、花艺、地毯、工艺品、墙饰以及床品。 1、家…

前端学习(1336):从数据库查询文档

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const courseSchema new mongoose.Sche…

前端学习(1337):mongoDB文档查询

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const courseSchema new mongoose.Sche…

声速的测量的实验原理和应用_创想智控:光学三角测量系统的测量原理与应用...

测量原理是三角测量&#xff1a;将激光线投影到表面上&#xff0c;并从与照相机的投影方向不同的方向进行观察。表面距离的变化会导致相机上成像线的偏移。这意味着传感器正在获取表面轮廓。光学三角测量是一种易于使用的方法&#xff0c;用于测量到物体的距离而不接触它们&…

PHP 5.4 on CentOS/RHEL 7.0, 6.5 and 5.10 via Yum

PHP 5.4.36 has been released on PHP.net on 18th December 2014, and is also available for CentOS/RHEL 5.10 and 6.5 at Webtatic via Yum. Update 2013-07-21 – A new package “php54w-mysqlnd” has been added as an alternative to “php54w-mysql”. This will ins…

仓库移动_移动式RFID仓库管理解决方案,智能仓库未来应用的会更广泛

在当下的仓储物流行业中&#xff0c;尤其在中国&#xff0c;信息化的应用不断的在行业内深化其作用。因为在新的产业环境下和信息技术的背景下&#xff0c;对企业提出了新的要求。客户要实现更加独特的体验&#xff0c;相关企业需要提高仓储作业效率&#xff0c;提高数据的准确…

Github作为maven私服仓库用

上传jar包到GitHub仓库流程打包一个项目本地使用流程 打包一个项目 distribute_id 是自定义的仓库id git_repo_path是本地git仓库的路径&#xff0c;也是存放编译的路径 使用下面的命令编译并打包到本地仓库 mvn deploy -DaltDeploymentRepository${distribute_id}::default:…

前端学习(1338):mongoDB删除文档

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const courseSchema new mongoose.Sche…

MS SQL SERVER数据库简单回顾

MS SQL SERVER数据库 1.创建数据库create database javateam;2.使用数据库use javateam;3.创建表create table 表名 (字段名 字段类型 主键 字段增长&#xff08;从X开始 , 每次加X个&#xff09;,字段名 字段类型,字段名 字段类型);create table peopleNone(pid…

docker绑定端口主机访问curl: (56) Recv failure: Connection reset by peer

这个问题超简单… 我用的nuxt&#xff0c;项目丢到了node容器里面。然后主机访问不了挂载的端口。 容器内是能curl通的。 然后&#xff0c;经过排查&#xff0c;nuxt只指定了127.0.0.1, host必须是0.0.0.0才能暴露。 https://www.nuxtjs.cn/faq/host-port

fl如何保存再次打开_「Excel技巧」Excel2016如何将自己设计的图表存为模板反复使用?...

现在的Excel系统内置的默认图表类型很丰富&#xff0c;各种各样&#xff0c;但好像也还是满足不了大家的需求。很多人会在插入默认图表后&#xff0c;在默认图表的基础上根据自己的需求进行修改。好不容易修改好的图表&#xff0c;能不能把它保存为模板&#xff0c;用来以后调用…

前端学习(1339):mongodb更新数据文档

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const courseSchema new mongoose.Sche…

[REGEX] 匹配任意字符(包括换行符)

[\s|\S]*转载于:https://www.cnblogs.com/bushe/p/4229522.html

java.lang.illegalargumentexception: invalid comparison: java.util.date and java.lang.string

人麻了… <if test"reqVo.startDate ! null and reqVo.startDate ! ">AND DATE_FORMAT(a.createTime, %Y-%m-%d) > #{reqVo.startDate}</if>startDate 是java.util.Date类型 正确&#xff1a; <if test"reqVo.startDate ! null">AND…

消息长度_填坑笔记:RocketMQ消息订阅失败问题?

前语&#xff1a;不要为了读文章而读文章&#xff0c;一定要带着问题来读文章&#xff0c;勤思考。作者&#xff1a;kinnylee 来源&#xff1a;http://1t.click/g26# 背景介绍项目组使用阿里RocketMQ&#xff0c;对同一个消费组设置不同的tag订阅关系&#xff0c;出现消息丢失…

前端学习(1340):mongoose验证规则

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const postSchema new mongoose.Schema…

深入分析C++引用

关于引用和指针的差别的文章非常多非常多&#xff0c;可是总是找不到他们的根本差别&#xff0c;偶然在codeproject上看到这篇文章&#xff0c;认为讲的挺好的&#xff0c; 所以翻译了下&#xff0c;希望对大家有帮助。 原文地址: http://www.codeproject.com/KB/cpp/Reference…

mysql8窗口函数

mysql window函数mysql 开窗函数demo&practice分组求和2. 和MySQL其它函数搭配mysql 开窗函数demo&practice 注意: mysql8 才有开窗函数, mysql5.7以下不要阅读。分组求和 create table sales (id int PRIMARY KEY auto_increment,city varchar(15),county varchar(1…

前端学习(1341):mongoose验证规则延伸

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const postSchema new mongoose.Schema…

艾创机器人_世界教育机器人大赛 2019赛季世界锦标赛落幕曲靖代表队获多个奖项...

来源&#xff1a;曲靖日报-曲靖新闻网本报讯12月14日,世界教育机器人大赛(WER)2019赛季世界锦标赛在上海隆重开赛。来自中国、美国、英国、日本、菲律宾、墨西哥等30多个国家和地区的1万余名选手在大赛中一决高低。刚刚结束的第六届曲靖市青少年机器人竞赛余温未散,从比赛中脱颖…