- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 LeetCode笔记:14.最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。解题思路:纵向扫描法,依次比较数组中每个字符串,从第一个字符开始比较,一直向后匹配,匹配每个坐标下的字符是否相等,如果不相等那么返回上次匹配成功的字符前缀class Soluti.
2021-07-15 17:05:47 186
原创 LeetCode笔记:9.回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。.
2021-07-15 16:36:15 206
原创 LeetCode笔记:8.字符串转换数字
请你来实现一个myAtoi(string s)函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,"123"...
2021-07-15 15:54:04 395
原创 LeetCode笔记:7.整数反转
给你一个 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解题思路:反转其实可以理解为每次拿末尾的数字来构造一个新的数字cl...
2021-07-14 16:30:53 139
原创 LeetCode笔记:6.Z字形变换
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "PAYPALISHIRING"行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入:...
2021-07-14 16:19:43 102
原创 LeetCode笔记:5.最长回文字符串
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"解题思路:中心扩散法,遍历字符串的每一个元素,通过中心向两边扩散,需要考虑回文字符串是奇数和偶数的情况class Solution { String str = ""; .
2021-07-14 14:34:11 77
原创 LeetCode笔记:4.寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:nums1 = [0,0]..
2021-07-14 14:01:58 96
原创 LeetCode笔记:3.无重复字符最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"...
2021-07-14 12:32:01 128
原创 LeetCode笔记:2.两数相加
给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,...
2021-07-14 12:27:33 95
原创 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], tar...
2021-07-14 12:18:38 74
原创 HashMap底层源码解析
HashMap作为java中使用频率非常高的集合之一,一直是面试的高频问题,接下来一块学习下HashMap的底层原理,以及jdk1.8版本都做了哪些优化。一、jdk1.7和1.8中,HashMap的主要区别是什么? 1.底层架构有变化 jdk1.7中,HashMap 是以数组加链表的形式组成的 jdk1.8中,HashMap 是以数组加链表或红黑树的形式组成的,当链表长度大于8并且容量大于64时,链表会转换为红黑树。 数组中的元素在源码中是...
2021-07-07 14:26:31 77
原创 redis缓存穿透、缓存雪崩、缓存击穿
线上一般的缓存使用场景是这样的1.缓存穿透 查询一条缓存中和数据库中都不存在的数据,那么这个查询就会百分之百查询到数据库上去对应的解决方案有:缓存空值,出现这种情况时,临时放个null到缓存中 布隆过滤器2.缓存击穿 有一个key非常热点,并发量非常大,当这个key的缓存失效后,并发查询会直接请求数据库。对应的解决方案有:不设置过期时间,如电商首页等 互斥锁,不建议大并发使用 缓存标记,标记失效时间比缓存时间短,先查缓存标记再查询缓存3.缓存雪崩...
2021-07-06 17:33:57 63
原创 遇到线上问题该怎么办?
一、引言 通常我们遇到线上问题,都需要面对以下几个问题:1.对业务有没有影响?2.怎么恢复?3.为什么会发生?4.怎么避免?二、线上问题处理原则 目标:尽快恢复,消除影响1.第一时间恢复系统,快速止损2.当前负责人不能短时间解决问题,则必须进行问题升级3.处理过程在不影响用户体验基础上,尽可能保留现场三、线上问题处理流程 一共分为5个阶段1.发现问题2.定位问题 分析定位过程中,优先考虑系统最近发生的变化...
2021-07-06 17:21:51 2215
原创 优雅的开发与设计
一、为什么要优雅的开发与设计 有很多java从业者会想,我把功能实现了,没啥大问题不就好了吗?为啥写个代码还要优雅?让我们来复习一下下面两个场景,希望不要发生在你们自己身上!!!一个来自线上出现问题时的灵魂拷问leader:问题影响面有多大?我:?leader:能回滚吗?我:?leader:怎么监控没有报警?我:?leader:有没有找到问题原因?我:?leader:报错日志发我一下,我来看看我:。。。忘记打了leader:。。。。二、怎么...
2021-07-06 16:47:41 92
原创 为什么要做单元测试
1.什么是单元测试1.1简介单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。单元测试是代码正确性验证的最重要的工具,也是系统测试当中最重要的环节。也是唯一需要编写代码才能进行测试的一种测试方法。在标准的开发过程中,单元测试的代码与实际程序的代码具有同等的重要性。每一个单元测试,都是用来定向测试其所对应的一个单元的数据是否正确。单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。
2021-07-06 16:27:33 876
原创 代码review到底能保证什么?
一、Code Review 目标1. 更快、更早发现代码问题2. 优化技术流程,同时也优化我们的社交流程,促进团队沟通协作流畅性3. 帮助大家提高代码质量,鼓励程序员们相互学习对方的长处和优点二、CodeReview不是万能的1. 并不能承担发现代码错误的职责2. 不能作为保证代码风格和编程规范的主要手段,可以通过一些代码风格插件或工具来完成此工作三、CodeReview能保证的基本项1. 新代码是否与全局架构保持一致2. 所有的代码是否简单易懂3. 代码是否尽可能的模块化了
2021-07-06 16:22:15 327
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人