为了之后找工作不被虐,每天刷3道《剑指offer》Day-1
文章目录
- 前言
- 💖 1、二维数组中的查找
- 题目描述
- 思路
- 💖 2、替换空格
- 题目描述
- 思路
- 💖 3、从尾到头打印链表
- 题目描述
- 思路一(反转函数)
- 思路二(递归)
- 思路二(栈)
前言
题目来源参考阿秀学长的刷题笔记,小戴只是把 C++的题解改成了 Java版本,并整理了其他思路,便于自己的学习~
如果解题有更好的方法,本文也会及时进行更新~
希望对你有帮助~ 一起加油哇~
💖 1、二维数组中的查找
牛客网原题链接
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
给定 target = 7,返回 true
给定 target = 3,返回 false
思路
从右上角度往左下角不断查找,
如果右上角值比 target 小,就往下走,值比 taget 大,就往右走,值相等的话,返回 true,依次类推…
如果到了左下角,还没有找到和 tatget 相等的值,就返回 false~
public class Solution {public boolean Find(int target, int [][] array) {if(array.length==0 || array[0].length==0){return false;}int row = array.length; // 行int col = array[0].length; // 列int i = 0; // 行int j = col - 1; // 列while(i<row && j>=0){if(array[i][j] < target){i++;}else if(array[i][j] > target){j--;}else{return true;}}return false;}
}
💖 2、替换空格
牛客原题链接
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
思路
新建一个 StringBuilder 动态字符串数组存放替换之后的字符串,
遍历 str , 如果 字符为空格,采用 StringBuilder 中的 append 方法在动态字符串数组中添加 %20 ,否则添加原字符
public class Solution {public String replaceSpace(StringBuffer str) {StringBuilder newStr = new StringBuilder();for(int i=0; i<str.length(); i++){char c = str.charAt(i);if(c == ' '){newStr.append("%20");}else{newStr.append(c);}}return newStr.toString();}
}
💖 3、从尾到头打印链表
牛客原题链接
题目描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)
思路一(反转函数)
新建一个 ArrayList ,遍历链表,从前往后保存每个节点的值到数组,
最后 反转函数reverse() 将数组反转
import java.util.*;
public class Solution {public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {ArrayList<Integer> list = new ArrayList();ListNode temp = listNode;while(temp != null){list.add(temp.val);temp = temp.next;}Collections.reverse(list); // 直接翻转链表return list;}
}
思路二(递归)
从表头开始往后递归进入每一个节点,遇到尾节点后开始返回,每次返回依次添加一个值进入输出数组,直到递归返回表头
import java.util.ArrayList;
public class Solution {//递归函数public void recursion(ListNode head, ArrayList<Integer> res){ if(head != null){//先往链表深处遍历recursion(head.next, res); //再填充到数组就是逆序res.add(head.val); }}public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {ArrayList<Integer> res = new ArrayList<Integer>();//递归函数解决recursion(listNode, res);return res;}
}
思路二(栈)
顺序遍历链表,将链表的值push到栈中
然后再依次弹出栈中的元素,加入到数组中,即可实现链表逆序
import java.util.*;
public class Solution {public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {ArrayList<Integer> arr = new ArrayList<Integer>();Stack<Integer> s = new Stack<Integer>();while(listNode!=null){s.push(listNode.val);listNode = listNode.next;}while(!s.isEmpty()){arr.add(s.pop());}return arr;}
}
相关文章:
为了之后找工作不被虐,每天刷3道《剑指offer》Day-1
本文已收录于专栏🌻《刷题笔记》文章目录前言💖 1、二维数组中的查找题目描述思路💖 2、替换空格题目描述思路💖 3、从尾到头打印链表题目描述思路一(反转函数)思路二(递归)思路二&a…...
Linux-磁盘管理介绍
Linux-磁盘管理介绍 计算硬盘介绍 硬盘是计算机主要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘内部由磁道、柱面、扇区、磁头等部件组成; cylinder:柱面sector:扇区 磁道与…...
爬虫架构(一):爬虫中的去重处理
目录一、概要二、去重应用场景以及基本原理2.1 爬虫中什么业务需要使用去重2.2 去重实现的基本原理2.3 根据原始数据进行去重判断2.4 根据原始数据的特征值进行去重判断2.5 临时去重容器与持久化去重容器2.6 常用几种特殊的原始数据特征值计算三、基于信息摘要算法的去重3.1 信…...
算法刷题总结 (二) 回溯与深广搜算法
算法总结2 回溯与深广搜算法一、理解回溯算法1.1、回溯的概念1.2、回溯法的效率1.3、回溯法问题分类1.4、回溯法的做题步骤二、经典问题2.1、组合问题2.1.1、77. 组合 - 值不重复2.1.2、216.组合总和III - 值不重复且等于目标值2.1.3、17. 电话号码的字母组合 - 双层回溯2.1.4、…...
Linux 总结9个最危险的命令,一定要牢记在心!
rm -rf 命令 该命令可能导致不可恢复的系统崩坏。 rm -rf / #强制删除根目录下所有东西。 rm -rf * #强制删除当前目录的所有文件。 rm -rf . #强制删除当前文件夹及其子文件夹。 执行rm -rf 一定要想半天,搞明白自己在干什么. fork 炸弹 😦) { 😐:&am…...
spring cloud
spring cloud 分享 springboot:可以说是spring cloud的基础,是springMVC框架的简化,约定大于配置(在使用上、非功能上的简化) 可以说每个MPO Digital api就是springboot project(springboot项目) spring cloud…...
【9】核心易中期刊推荐——图像视觉与图形可视化
🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…...
0108Bean销毁-Bean生命周期详解-spring
Bean使用阶段,调用getBean()得到bean之后,根据需要,自行使用。 1 销毁Bean的几种方式 调用org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#destroyBean调用org.springframework.beans.factory.config.Conf…...
微信小程序可以进行dom操作吗?
小程序不能使用各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作 原因:在小程序中,渲染层和逻辑层是分开的,分别运行在不同的线程中,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺…...
昇腾AI深耕沽上:港口辐射力之后,天津再添基础创新辐射力
作者 | 曾响铃 文 | 响铃说 AI计算正在以新基建联动产业集群的方式,加速落地。 不久前,天津市人工智能计算中心正式揭牌,该中心整体规划300P算力,2022年底首批100P算力上线投入运营,并实现上线即满载。 这是昇腾AI…...
基于YOLOv5的疲劳驾驶检测系统(Python+清新界面+数据集)
摘要:基于YOLOv5的疲劳驾驶检测系统使用深度学习技术检测常见驾驶图片、视频和实时视频中的疲劳行为,识别其闭眼、打哈欠等结果并记录和保存,以防止交通事故发生。本文详细介绍疲劳驾驶检测系统实现原理的同时,给出Python的实现代…...
【Linux】-- 进程优先级和环境变量
目录 进程的优先级 基本概念 如何查看优先级 PRI与NI NI值的设置范围 NI值如何修改 修改方式一 : 通过top指令修改优先级 修改方式二 : 通过renice指令修改优先级 进程的四个重要概念 环境变量 基本概念 常见的环境变量 查看环境变量 三种…...
iOS 紧急通知
一般通知 关于通知的各种配置和开发,可以参考推送通知教程:入门 – Kodeco,具有详细步骤。 紧急通知表现 紧急通知不受免打扰模式和静音模式约束。当紧急通知到达时,会有短暂提示音量和抖动(约2s)。未锁…...
即时零售:不可逆的进化
“人们经常问我,这个世界还是平的吗?我经常跟他们说,亲爱的,它真的是平的,比以前更平了。”2021年3月,《世界是平的》作者托马斯弗里德曼在演讲时说。如他所说,尽管逆全球化趋势加剧,…...
零售数据总结经验:找好关键分析指标和维度
各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维数据分析,通过数据讲故事。 每逢月末、季末、年终,运营部门的同事又要开始进行年终总结分析。那么,对零售连锁企业来说,…...
从零开始搭建游戏服务器 第一节 创建一个简单的服务器架构
目录引言技术选型正文创建基础架构IDEA创建项目添加Netty监听端口编写客户端进行测试总结引言 由于现在java web太卷了,所以各位同行可以考虑换一个赛道,做游戏还是很开心的。 本篇教程给新人用于学习游戏服务器的基本知识,给新人们一些学习…...
C++中那些你不知道的未定义行为
引子 开篇我们先看一个非常有趣的引子: // test.cpp int f(long *a, int *b) {*b 5;*a 1;return *b; }int main() {int x 10;int *p &x;auto q (long *)&x;auto ret f(q, p);std::cout << x << std::endl;std::cout << ret <&…...
java基础面试题(四)
Mysql索引的基本原理 索引是用来快速寻找特定的记录;把无序的数据变成有序的查询把创建索引的列数据进行排序对排序结果生成倒排表在倒排表的内容上拼接上地址链在查询时,先拿到倒排表内容,再取出地址链,最后拿到数据聚簇索引和非…...
@PropertySource使用场景
文章目录一、简单介绍二、注解说明1. 注解源码① PropertySource注解② PropertySources注解2. 注解使用场景3. 使用案例(1)新增test.properties文件(2)新增PropertySourceConfig类(3)新增PropertySourceTe…...
【C语言进阶:刨根究底字符串函数】strtok strerror函数
本节重点内容: 深入理解strtok函数的使用深入理解strerror函数的使用⚡strtok Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part ofstr1sep参数是个字符串,定义了用作分隔符的字符集合。第一个参数指…...
ABYSSAL VISION(Flux.1-Dev)风格化研究:模拟Typora等工具的极简文档配图
ABYSSAL VISION(Flux.1-Dev)风格化研究:模拟Typora等工具的极简文档配图 不知道你有没有过这样的体验:写技术文档或者博客的时候,文字部分洋洋洒洒,逻辑清晰,但一到需要配图说明的地方就卡壳了…...
OpenClaw技能开发入门:为nanobot镜像编写第一个插件
OpenClaw技能开发入门:为nanobot镜像编写第一个插件 1. 为什么需要自定义技能 当我第一次接触OpenClaw时,最让我惊喜的是它能够像人类一样操作电脑完成各种任务。但很快我发现,内置的基础技能并不能完全满足我的个性化需求。比如我需要定期…...
42-西门子1200伺服控制5轴程序 程序采用1200系列PLC,项目实现以下功能: (1)
42-西门子1200伺服控制5轴程序 程序采用1200系列PLC,项目实现以下功能: (1).三轴机械手联动取放料PTO脉冲定位控制台达B2伺服 (2).台达伺服速度模式应用扭矩模式应用实现收放卷 (3).…...
Qwen3-VL:30B多模态大模型在飞书智能办公中的实战应用
Qwen3-VL:30B多模态大模型在飞书智能办公中的实战应用 飞书作为现代企业智能办公平台,如何通过多模态大模型实现真正的智能化升级?本文将带你从零搭建企业级AI助手,让图文交互能力真正落地业务场景。 1. 为什么企业需要多模态AI助手ÿ…...
8_Harness驾驭工程实践:企业级落地与OpenAI案例解析
8_Harness驾驭工程实践:企业级落地与OpenAI案例解析 关键字: 企业级落地、OpenAI、Ryan Lopopolo、Codex、Harness Engineering、Citi Bank、Ancestry、Ulta Beauty、Agent-First开发、部署策略、自托管、成本优化、迁移路径、最佳实践、0行手写代码、百…...
【调试心法】别用 printf 谋杀你的系统了!打破“测不准”魔咒,用 C++ 与 DMA 构筑微秒级零开销异步观测者
摘要:在硬实时控制系统中,最可怕的 Bug 往往是薛定谔的 Bug——当你试图用 printf 去观察它时,观察行为本身产生的巨大延迟,就足以改变系统的物理运行轨迹。本文将无情揭露同步串口打印的耗时真相,批判阻塞式调试对高频…...
小白友好!Gemma-3-12B-IT WebUI部署常见错误及修复方法
小白友好!Gemma-3-12B-IT WebUI部署常见错误及修复方法 1. 为什么你的WebUI总是打不开? 你是不是也遇到过这种情况:跟着教程一步步部署Gemma-3-12B-IT的WebUI,最后一步打开浏览器,输入地址,结果页面一直转…...
基于光伏出力不确定性的梯级水光互补系统短期优化调度模型及Matlab代码复现研究报告
1023-(文章复现)梯级水光互补系统最大化可消纳电量期望短期优化调度模型matlab代码 参考资料《梯级水光互补系统最大化可消纳电量期望短期优化调度模型》 文中考虑光伏出力不确定性,以整体可消纳电量期望最大为目标,提出了梯级水光互补系统的短期优化调度…...
Sqoop性能调优之 --fetch-size:小参数,大作用
Sqoop性能调优之 --fetch-size:小参数,大作用1. 引言:被忽视的"隐形冠军"2. 什么是 --fetch-size?2.1 基本定义2.2 核心作用3. 底层原理:从逐行到批量3.1 没有 --fetch-size 的情况(逐行读取&…...
ViGEmBus如何解决Windows游戏控制器兼容性难题?
ViGEmBus如何解决Windows游戏控制器兼容性难题? 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款专业的Windows内核模式驱动程序&a…...
