题目1:数组中的重复数字

在一个长度为 n 的数组里的所有数字都在 0~n-1 的范围内。数组中的某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 找出数组中任意一个重复的数字。 例如,如果输入长度为 7 的数组 {2,3,1,0,2,5,3} ,那么对应的输出是重复的数字2或者3

示例 1:

1
2
输入:documents = [2, 5, 3, 0, 5, 0]
输出:0 或 5
阅读全文 »


开坑。《剑指Offer》作为比较出名的面试辅导用书本人买了很久但是一直没有看完,趁近期有时间把题目刷一遍。

书中的题解都是由C++完成的,这边博客中会使用Java编写。编程语言不是限制程序员学习的障碍,学习解决问题的思路和要点才是关键。

博客中编写的代码会参考力扣上的解法,并会标注链接,有些需要高阶算法基础的解法就没有在本博客中解析了,想深入研究的同学可以在对应题目的链接中寻找题解。

序号题目名称
面试题3数组中的重复数字
面试题4替换空格
面试题5二维数组中的查找
面试题6从尾到头打印链表

  • 很久没提交更新,打开博客一看,果然博客框架更新了很多东西。作为一个强迫症患者,在把这一两年内写的文章都提交之前,把框架统统更新一遍,简单记录一下内容。
  • 配置项中和老版本一致的项目不再一一赘述,仅列举出配置项不同或者失效或者需要使用新的实现方式的功能。

更新 Node.js

1
2
$ node --version
v16.17.0

顺带更新npm(需要到官网找到对应node版本的npm版本升级)

1
2
$ npm --version
v8.15.0

更新 Hexo 和主题 NexT

由于我的版本和最新的差距太大,索性直接把整个文件夹铲了重新建站。 注意:记得保存原仓库的副本,主要是_post/*.yml文件。 首先是重新安装最新的Hexo:

1
2
3
4
5
$ cnpm install hexo-cli -g
$ cnpm install [email protected]
$ hexo version
hexo: 7.0.0
hexo-cli: 4.3.0

对于新版本的next主题可以使用npm方式直接安装了:

1
$ cnpm install hexo-theme-next
当然,也可以使用git命令将主题下载到themes/next目录下:
1
$ git clone https://github.com/next-theme/hexo-theme-next themes/next
安装完成之后找到文件夹下的_config.yml,修改其中的主题为theme: next。此时,博客的next主题就安装成功了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ hexo version
INFO Validating config
INFO ==================================
███╗ ██╗███████╗██╗ ██╗████████╗
████╗ ██║██╔════╝╚██╗██╔╝╚══██╔══╝
██╔██╗ ██║█████╗ ╚███╔╝ ██║
██║╚██╗██║██╔══╝ ██╔██╗ ██║
██║ ╚████║███████╗██╔╝ ██╗ ██║
╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═╝
========================================
NexT version 8.19.1
Documentation: https://theme-next.js.org
========================================
hexo: 7.0.0
hexo-cli: 4.3.0
...
如果安装完成之后,有依赖包没有安装全可以使用npm update进行更新。

阅读全文 »


LeetCode 26.Best Time To Buy And Sell Stock II 买卖股票的最佳时机 II

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

1
2
3
4
输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2:
1
2
3
4
输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。

示例 3:

1
2
3
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

提示: 1 <= prices.length <= 3 * 10 ^ 4 0 <= prices[i] <= 10 ^ 4

阅读全文 »


LeetCode 26.Remove Duplicates From Sorted Array 删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1)额外空间的条件下完成。

示例1:

1
2
3
给定数组 nums = [1,1,2], 
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。

示例2:

1
2
3
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。
阅读全文 »


与Spring集成

这里用的Spring版本

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
这里用的RabbitMQ结合Spring的版本
1
2
3
4
5
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>

阅读全文 »


写在前面

之前自己学习了一下RMQ的使用,一直没有时间整理,现在抽空整理一下笔记。

主要内容

1.RabbitMQ简介和安装 这块主要是一个RabbitMQ所包含的内部元素的介绍(交换机、队列等等)。

2.原生Java客户端的使用 重要,主要理解是这一块。弄懂了原生的使用,基本上遇到问题也都能解决了。

2020-9-24 注:这边考虑了一下,模块1和模块2结合在一起比较好,所以总的就分两部分吧。

3.与Spring集成 其实就是把上一部分进行了封装,理解的话需要Spring相关知识,比如Bean的初始化,自动注入。使用比较无脑,cv就行。

阅读全文 »


LeetCode 4. Median Of Two Sorted Arrays 寻找两个有序数组的中位数

给定两个大小为 m 和 n 的有序数组 nums1nums2

请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 \(O(log(m + n))\)

你可以假设 nums1nums2 不会同时为空。

示例 1:

1
2
nums1 = [1, 3]
nums2 = [2]

则中位数是 2.0

示例 2:

1
2
nums1 = [1, 2]
nums2 = [3, 4]

则中位数是 (2 + 3)/2 = 2.5

阅读全文 »


LeetCode 3. Longest Substring Without Repeating Characters 无重复字符的最长子串

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

示例 1:

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

示例 2:

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

示例 3:

1
2
3
4
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
阅读全文 »
0%