自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 BigDecimal

-

2023-02-15 14:59:40 236

转载 【java关键字】transient

2023-02-13 21:53:47 155

原创 不知道起什么标题系列1

--

2023-01-11 10:06:55 142

原创 leetcode 42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2:输入:height = [4,2,0,3,2,5]输出:9提示:n == height.length0 <= n <= 3 *

2021-05-03 15:03:19 263 2

原创 leetcode 41. 缺失的第一个正数

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1提示:0 <= nums.length <= 300-231 <= nums[i] <= 231 - 1思路:遍历数组的数

2021-04-30 18:49:18 154 1

原创 leetcode 40. 组合总和 II

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6]]示例 2:输入:

2021-04-30 13:30:12 101

原创 leetcode 39. 组合总和

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]示例 2:输入:candidates = [2,3,5], target

2021-04-29 10:59:19 144

原创 《laravel框架关键技术解析》第6章 学习笔记

laravel框架中的设计模式6.1 服务容器1.解释下服务容器的概念在程序运行的过程中动态地为系统提供服务的容器,这里的服务如:对象,文件路径,系统配置等;2.什么是依赖,举个例子?依赖会产生什么问题?比如有A,B,C三个交通工具类,有个旅行者类里面有一个交通工具的属性,然后旅行者类的构造函数里面直接使用A交通工具类来声明它的交通工具的属性。这样,以后需求改了,这个交通工具要变成其他类型的了比如变成B/C类,就要不断手动改这个属性。这种依赖关系不要一开始就写死,应该通过动态注入的方式实现[

2021-04-25 23:00:49 165

原创 leetcode 38. 外观数列

给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = “1”countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1 描述前一项,这个数是 1 即 “ 一

2021-03-11 15:35:38 111

原创 leetcode 37. 解数独

编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。一个数独。答案被标成红色。提示:给定的数独序列只包含数字 1-9 和字符 '.' 。你可以假设给定的数独只有唯一解。给定数独永远是 9x9 形式的。思路:1.标记出每一行,每一列和每一块中已经存在的数字,如下图(假设当前位置[i,j],值为t):

2021-03-11 14:23:36 102

原创 leetcode 36. 有效的数独

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[ ["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9","5",".",".","."],

2021-03-10 23:11:56 79

原创 leetcode 35. 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路:二分的两种模板这里是要找到第一个大于等于目标值的数组位置,使用模板2;题解:cppclass Solut

2021-03-10 14:18:17 73

转载 leetcode 34. 在排序数组中查找元素的第一个和最后一个位置

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [],

2021-03-10 13:39:53 126

原创 leetcode 33. 搜索旋转排序数组

整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个整数 ta

2021-03-10 11:29:55 98

原创 leetcode 32. 最长有效括号

给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例 2:输入:s = ")()())"输出:4解释:最长有效括号子串是 "()()"示例 3:输入:s = ""输出:0提示:0 <= s.length <= 3 * 104s[i] 为 '(' 或 ')'思路:一段合法序列要满足的条件:1."("数量 == ")"数量2.序列的任意前

2021-03-09 16:25:19 145

原创 leetcode 31. 下一个排列

实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums = [1]输出:[1]提示:1 <= nums

2021-02-27 17:13:21 91

原创 leetcode 29. 两数相除

给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3.33333..) = truncate(3)

2021-02-27 15:06:12 86

原创 leetcode 28. 实现 strStr() KMP算法

实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bba"输出: -1说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

2021-02-26 22:54:53 206

原创 162. 寻找峰值

峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。示例 1:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入:nums = [1,2,1,3,5,6,4]输出:1 或 5 解释:你的函数可以返回索引 1,其峰值元素为 2; 或者返回索引 5,

2021-01-27 20:28:52 136

原创 160. 相交链表

编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0

2021-01-27 19:56:15 81

原创 155. 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,null,-3

2021-01-27 19:20:36 57

原创 154. 寻找旋转排序数组中的最小值 II

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0说明:这道题是 寻找旋转排序数组中的最小值 的延伸题目。允许重复会影响算法的时间复杂度吗?会如何影响,为什么?C++class Solution {public: int fi

2021-01-27 19:00:32 47

原创 153. 寻找旋转排序数组中的最小值

假设按照升序排序的数组在预先未知的某个点上进行了旋转。例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] 。请找出其中最小的元素。示例 1:输入:nums = [3,4,5,1,2]输出:1示例 2:输入:nums = [4,5,6,7,0,1,2]输出:0示例 3:输入:nums = [1]输出:1提示:1 <= nums.length <= 5000-5000 <= nums[i] <= 5000nums 中的所

2021-01-27 18:41:23 45

原创 152. 乘积最大子数组

给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。C++class Solution {public: int maxProduct(vector<int>& nums) {

2021-01-27 17:38:04 40

原创 151. 翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。说明:1.无空格字符构成一个 单词 。2.输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。3.如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。示例 1:输入:"the sky is blue"输出:"blue is sky the"示例 2:输入:" hello world! "输出:"world! hello"解释:输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例

2021-01-26 23:34:34 77

原创 200. 岛屿数量

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:grid = [ ["1"

2021-01-23 20:17:06 62

原创 199. 二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---思路:就是层次遍历,每一层的最后一个加入到结果中来即可C++题解/** * Definition for a binary tree n

2021-01-23 19:28:48 59

原创 198. 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2,

2021-01-23 18:39:05 69

原创 191. 位1的个数

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。进阶:如果多次调用这个函数,你将如何优化你的算法?

2021-01-23 17:26:03 63

原创 190. 颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。示例 2:输入:11111111111111111

2021-01-23 00:39:56 75

原创 189. 旋转数组

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输

2021-01-22 22:56:30 49

翻译 系统设计(五)设计Facebook Messenger

让我们设计一个像Facebook Messenger这样的即时通讯服务,用户可以通过网络和移动界面相互发送文本信息。1.什么是Facebook Messenger?Facebook Messenger是一个软件应用程序,它为用户提供基于文本的即时消息服务。Messenger用户可以通过手机和facebook的网站与他们的facebook好友聊天。2.系统的要求和目标我们的Messenger应该满足以下要求:功能需求:1.Messenger应支持用户之间的一对一对话。2.Messenger应跟踪

2021-01-06 13:32:40 1078

翻译 系统设计(四) 设计Instagram

让我们设计一个像Instagram这样的照片分享服务,用户可以上传照片与其他用户分享。类似服务:Flickr,Picasa 难度级别:中等1.什么是Instagram?Instagram是一项社交网络服务,用户可以上传照片和视频,并与其他用户分享。Instagram用户可以选择公开或私下分享信息。任何公开共享的内容都可以被任何其他用户看到,而私有共享内容只能由一组特定的人访问。Instagram还使用户能够通过Facebook、Twitter、Flickr和Tumblr等许多其他社交网络平台进行共享。

2021-01-05 16:06:51 764

翻译 系统设计(三)Designing Pastebin

让我们设计一个类似于Pastebin的web服务,用户可以在其中存储纯文本。使用这个服务的用户将输入一段文本,并获得一个随机生成的URL来访问它。类似服务:pastebin.com,pasted.co,hplapp.com1.Pastebin是什么?类似Pastebin的服务使用户能够通过网络(通常是Internet)存储纯文本或图像,并生成唯一的URL来访问上传的数据。这些服务也被用来快速地在网络上共享数据,因为用户只需传递URL就可以让其他用户看到它。如果您以前没有使用pastebin.com,请尝

2021-01-04 21:44:55 361

翻译 系统设计 (二)设计类似TinyURL的短URL服务

让我们设计一个类似TinyURL的短URL服务。此服务将提供重定向到长URL的短URL别名。类似服务:bit.ly、goo.gl、qlink.me等。1.为什么我们需要缩短URL?URL缩短用于为长URL创建较短的别名。我们把这些缩短的别名称为“短链接”。当用户点击这些短链接时,将重定向到原始URL。当显示,打印,发送信息或发送推特时,短链接节省了大量的空间。此外,用户不太可能错误键入更短的URL。例如,如果我们通过TinyURL缩短这个页面:https://www.educative.io/coll

2021-01-04 15:36:04 590

翻译 系统设计(一)概述

许多软件工程师在系统设计面试(SDI)中苦苦挣扎,主要有三个原因:·SDI的非结构化性质使得SDI没有标准答案,他们被要求进行开放式设计。·他们在开发大规模系统方面缺乏经验。·他们没有为SDI做好准备。就像编码面试一样,没有有意识地准备SDI的面试者大多在面试中表现不佳。尤其是在谷歌、Facebook、亚马逊、微软等顶级公司。在这些公司中,表现不高于平均水平的应聘者获得录用的机会有限。另一方面,好的表现总是会带来更好的待遇(更高的职位和更高的薪水),因为它显示了候选人处理复杂系统的能力。在本课程

2021-01-03 21:09:57 948 1

原创 go web 项目记录(二)注册登录功能:0.简单实现

登录的流程首先,咱们在浏览器栏输入:api/name_login然后弹出登录页面,让你输入用户名和密码提交之后生成POST表单传到后端后端去数据库看有没有这个用户,没有就创建一个注册路由在main函数中加上RegisterRouter(engine)func RegisterRouter(engine *gin.Engine){ new(controller.MemberController).Router(engine)}Controller层的处理然后咱们在MemberCo

2020-12-21 19:29:35 1494

原创 go web项目记录(一)解析配置文件

写一个对配置文件的解析函数首先,咱们写一个json类型的配置文件(config/configure.json){ "app_name": "my_demo", "app_mode": "debug", "app_host": "localhost", "app_port": "8090"}然后,咱们写一个解析这个json配置的函数(tool/config.go)package toolimport ( "bufio" "encoding/json" "os")ty

2020-12-20 14:16:42 279

原创 leetcode 543 二叉树的直径

题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。题解/** * Definition for a binary tre

2020-11-27 20:54:25 142

原创 leetcode 542 01 矩阵

题目描述给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:[[0,0,0], [0,1,0], [0,0,0]]输出:[[0,0,0], [0,1,0], [0,0,0]]示例 2:输入:[[0,0,0], [0,1,0], [1,1,1]]输出:[[0,0,0], [0,1,0], [1,2,1]]提示:给定矩阵的元素个数不超过 10000。给定矩阵中至少有一个元素是 0。矩阵中的元素

2020-11-27 20:12:18 142

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除