LeetCode解题记录(一)

1、两数之和

题目描述: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

示例 1:输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:输入:nums = [3,3], target = 6
输出:[0,1]

思路1嵌套遍历a、b两个数,找到相加等于target的,并且a、b的位置不能相同

    /*** 1. 两数之和** @param nums* @param target* @return*/public int[] twoSum(int[] nums, int target) {int[] resultArr;for (int i = 0; i < nums.length; i++) {int n1 = nums[i];for (int j = 0; j < nums.length; j++) {int n2 = nums[j];//两个值相加等于target,且两个值的下标不能相同if (n1 + n2 == target && i != j) {resultArr = new int[]{i, j};return resultArr;}}}return new int[]{};}public int[] twoSum2(int[] nums, int target) {//用来记录脚标和脚标对应的值Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {int n = target - nums[i];//包含说明找到了能加出target的组合if (map.containsKey(n)) {return new int[]{map.get(n), i};}//找不到的话,把脚标和脚标对应的值记录下来map.put(nums[i], i);}return new int[]{};}

2、无重复字符的最长子串

题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

思路:遍历字符串...

public int lengthOfLongestSubstring(String s) {int i = 0;int maxLen = 0;while (i < s.length()) {StringBuilder a = new StringBuilder();for (int j = i; j < s.length(); j++) {if (!a.toString().contains(s.charAt(j) + "")) {a.append(s.charAt(j));} else {break;}}if (maxLen < a.length()) {maxLen = a.length();}i++;}return maxLen;}

3、最长回文字符

给你一个字符串 s,找到 s 中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。


示例 2:输入:s = "cbbd"
输出:"bb"

思路:回文的特点是对称,如果字符串的长度为奇数,从最中间一个点开始(自己对称),左右两边应该都是对称的(值相同)如:aba;如果字符串的长度为偶数,则从中间两个点开始,左右都是对称的,如abba。

根据回文的这个特点,我们可以把字符串的每一位都当作中心点,依次以回文串是奇数或是偶数的情况进行比对,找出符合条件的回文串并进行长度的比较。

/*** 最长回文子串* 回文的特点:从中间位置开始,两边都是对称的* 把每一位都当作中心扩散点,从中间向两边寻找,发现左右不对称,说明不(再)是回文** @param s* @return*/public String longestPalindrome(String s) {if (s == null || s.length() == 0) {return "";}String result = "";for (int i = 0; i < s.length(); i++) {//字符串中的回文是奇数,以当前的索引位置作为起点,左右扩散String oddRes = getPalindrome(s, i, i);//字符串中的回文是偶数,以当前的索引位置和它后一个位置作为起点,左右扩散String evenRes = getPalindrome(s, i, i + 1);//比较长度result = result.length() < oddRes.length() ? oddRes : result;result = result.length() < evenRes.length() ? evenRes : result;}return result;}public String getPalindrome(String s, int toLeft, int toRight) {while (toLeft >= 0 && toRight < s.length()) {//左边等于右边,说明对称if (s.charAt(toLeft) == s.charAt(toRight)) {toLeft--;toRight++;} else {break;}}//这里跳出的条件是在最后一次满足条件后又做了一次--++,因此跳出时的left和right已经都是不符合条件的了;// 结合subString的特点是左边包括,右边不包括;因此左边+1,右边不变return s.substring(toLeft + 1, toRight);}

4、N字形变换

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:

P   A   H   N
A P L S I I G
Y   I   R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。

示例 1:输入:s = "PAYPALISHIRING", numRows = 3
输出:"PAHNAPLSIIGYIR"


示例 2:输入:s = "PAYPALISHIRING", numRows = 4
输出:"PINALSIGYAHRPI"
解释:
P     I    N
A   L S  I G
Y A   H R
P     I


示例 3:输入:s = "A", numRows = 1
输出:"A"

思路:按行找规律,找到规律顺序读出即可
1、每行的第一个元素的索引(位置)等于行数对应的索引i
2、第一行和最后一行元素之间的位置相差2*总行数-2
3、其他行位置相差 以 2*总行数-2-2*i 和 2*i 交替
4、如果行数为1,返回原字符串

 public String convert(String s, int numRows) {StringBuilder newS = new StringBuilder();int step = 2 * numRows - 2;if (step == 0) {return s;}int sIndex = 0;boolean flag = true;for (int i = 0; i < numRows; i++) {//每行打头的索引位置等于所在行数目sIndex = i;flag = true;while (sIndex < s.length()) {newS.append(s.charAt(sIndex));if (i == 0 || i == numRows - 1) {sIndex += step;} else {if (flag) {sIndex += (step - 2 * i);} else {sIndex += 2 * i;}flag = !flag;}}}return newS.toString();}

5、整数反转

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

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

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

示例 1:输入:x = 123
输出:321


示例 2:输入:x = -123
输出:-321


示例 3:输入:x = 120
输出:21


示例 4:输入:x = 0
输出:0

思路:主要需解决整数末尾0的问题,需要把末尾的连续0去掉,使用求余+除法的方式循环把末尾的连续0去掉
注意点1:0的处理
注意点2:边界处理

public int reverse(int x) {while (x != 0) {if (x % 10 == 0) {x = x / 10;} else {break;}}String xString = String.valueOf(x);StringBuilder resStr = new StringBuilder(xString);resStr.reverse();String res = resStr.toString();if (x < 0) {res = resStr.substring(0, resStr.length() - 1);res = "-" + res;}try {return Integer.parseInt(res);} catch (Exception e) {return 0;}}

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

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

相关文章

LangChain(3)对话缓存方式 Conversational Memory

LLM 默认是无状态的&#xff0c;即询问当前的问题与上下文无关&#xff0c;当我们需要将多轮对话信息给到LLM 时&#xff0c;就需要使用缓存Memory。缓存方式有多种。 from langchain import OpenAI from langchain.chains import ConversationChain# first initialize the la…

Linux内核的任务:

硬件与软件之间的中间层&#xff1a;内核在技术层面上充当硬件和软件之间的中间层&#xff0c;负责将应用程序的请求传递给硬件&#xff0c;并处理硬件设备和组件的寻址和操作。 应用程序的接口&#xff1a;对于应用程序来说&#xff0c;内核是它们与硬件之间的接口。应用程序通…

抓 https 报文新方案 -Magisk+LSPosed,来试试吧

关于如何抓取Android端https报文&#xff0c;在之前一篇文章中有介绍可以通过VitualXposedJustTrustMe模块禁用SSL验证&#xff0c;这样可以抓取到https&#xff0c;还是有一些同学反馈以下的一些问题&#xff1a; App在低版本的Android上不兼容&#xff0c;需要用高版本的And…

uniapp 集成七牛云,上传图片

1 创建项目 我是可视化创建项目的 &#xff0c;cli创建的项目可以直接使用npm安装七牛云。 2 拷贝qiniuUploader.js到项目&#xff0c;下面的回复 放了qiniuUploader.js百度云链接。 3 在需要使用qiniuUploader的vue文件 引入。 4 相册选择照片&#xff0c;或者拍照后&#xff…

视频问答新增或修改视频问答

通过问答id新增或修改视频问答题目 新增或修改视频问答 图3&#xff1a;视频问答功能&#xff08;观看效果&#xff09; 图4&#xff1a;视频问答功能&#xff08;观看效果&#xff09; 图5&#xff1a;视频问答功能&#xff08;观看效果&#xff09; 单元测试 Testpublic voi…

zabbix 6.0 监控LNPM环境

这里的LNPM是指Linux&#xff0c;Nginx,php-fpm和Mysql.具体版本如下。 Linux : centos7.9Nginx: 1.22.1php-fpm:7.4Mysql: 8.0 一、centos7.9 编译安装Nginx 为了弄清楚Nginx各种配置&#xff0c;我们采用编译安装的形式部署Nginx。 1.下载安装包 首先下载Nginx软件包&am…

oracle unpivot用法

Oracle UNPIVOT函数是将列旋转为行的一种方式。UNPIVOT函数可以将多个列转换为对应的行&#xff0c;以便进行聚合或插入操作。UNPIVOT函数可以将多个列转换为对应的行&#xff0c;以便进行聚合或插入操作。下面是使用UNPIVOT函数的示例&#xff1a; 假设我们有一个表&#xff…

为什么媒体和创意工作者更喜欢 Splashtop 进行远程访问

在当今快速发展的数字环境中&#xff0c;可靠的远程访问已成为全球媒体和创意工作者不可或缺的工具。 远程访问让创意工作者不再受传统办公空间边界的限制&#xff0c;完全实现了随时随地办公。无论是实时剪辑、高分辨率渲染还是其他创意任务&#xff0c;创意工作者对高性能远…

​LeetCode解法汇总874. 模拟行走机器人

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 机器人在一个无限大小的 XY 网格平面上行走&#xff0c;从点 (0, 0) 处开始出发…

ENSP实验四:搭建VPN(GRE,配置安全策略)

首先分析一下数据的流向&#xff1a; PC1->PC2 1、FW1&#xff1a;trust->dmz 【192.168.1.1->192.168.2.1 ICMP】 2、AR1->AR2&#xff1a;【202.1.1.1->202.1.3.1|GRE|192.168.1.1->192.168.2.1 icmp】 3、FW2&#xff1a; ①untrust->local …

kotlin中使用Room数据库(包含升降级崩溃处理)

目录 1.导入依赖库 2.数据实体类 3.数据访问对象 (DAO) 4.数据库类 5.调用DAO里面的“增、删、改、查”方法 6.数据库升降级处理 升级&#xff08;保存数据库历史数据&#xff09;&#xff1a; 升级&#xff08;不保存数据库历史数据&#xff09;&#xff1a; 降级&…

SpringCloud学习路线(1)—— 从头开始的微服务

一、服务架构的历史 现有的服务框架&#xff1a; 单体架构 概念&#xff1a; 将业务所有功能集中在一个项目中开发&#xff0c;打包部署优点&#xff1a; 架构简单&#xff0c;部署成本低缺陷&#xff1a; 耦合度高 分布式架构 概念&#xff1a; 根据业务功能对系统进行拆分&a…

laravel门面实现原理之源码分析

文章目录 场景总结源码分析 场景 最近待业&#xff0c;重新翻看laravel源码, Route::get注册路由&#xff0c;那Route类并没有get方法&#xff0c;那这行代码究竟执行了什么呢? 总结 Route::get 会调到父类的魔术方法__callStatic 第一步: getFacadeRoot 从容器中获取名称是ro…

了解 3DS MAX 3D摄像机跟踪设置:第 7 部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 在SynthEyes中跟踪素材 步骤 1 打开SynthEyes软件。 打开合成之眼 步骤 2 在跟踪素材之前&#xff0c;您需要设置首选项。因为&#xff0c;你 稍后将在 3ds Max 中工作&#xff0c;必须根据 3ds Max…

【源码解析】Mybatis执行原理

Mybatis执行原理 1.获取SqlSessionFactory2.创建SqlSession3.创建Mapper、执行SQL MyBatis 是一款优秀的持久层框架&#xff0c;MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息&#xff0c;将接口和…

elasticsearch学习入门+实战

学习链接1 基础概念 官网学习&#xff1a;地址 基本命令 PS&#xff1a;使用Apifox测试 查询所有索引库 添加索引库 添加时&#xff0c;加入分词器 添加时&#xff0c;加入记录属性值 查询获取索引库 删除索引库 添加文档 必须要在添加文档值的时候用【_doc】&a…

如何在 Excel 中快速生成随机密码?

有时&#xff0c;我们可能想创建随机密码来保护某些重要内容。 但是&#xff0c;您有什么技巧可以在Excel中快速生成随机密码&#xff1f; 在这里&#xff0c;我有一些可以在Excel工作表中处理的方法。 用公式生成随机密码 使用插入随机数据生成随机密码​编辑 用公式生成随机…

「深度学习之优化算法」(十五)混合蛙跳算法

1. 混合蛙跳算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   混合蛙跳算法(Shuffled Frog Leaping Algorithm)是根据青蛙在石块上觅食时的种群分布变化而提出的算法。算法提出于2003年,时间有点久远,但相关的论文并不是特别多,仍有较大的研究和改进空间。…

IPD跟敏捷、DevOps一样吗?有什么区别?

1992年在激烈的全球市场竞争下&#xff0c;IBM遭遇到了严重的财政困难&#xff0c;公司销售收入停止增长&#xff0c;利润急剧下降。经过内部分析&#xff0c;IBM发现他们在研发费用、研发损失费用和产品上市时间等几个方面远远落后于业界最佳。为了重新获得市场竞争优势&#…

思维决定发展,测试人也不例外

最近特别懒&#xff0c;不想码字&#xff0c;原本写作就很差&#xff0c;更是退化严重。社招和校招面试过很多人&#xff0c;从十年前自己还很弱的时候学着面试&#xff0c;到数百次面试积累之后&#xff0c;面对候选人的时候&#xff0c;我的内心依然有些许紧张&#xff0c;非…