LeetCode
Contents
1 两数之和
1.1 题目介绍
- 给定一个整数数组
nums
和一个整数目标值target
,请你在该数组中找出和为目标值target
的那两个整数,并返回它们的数组下标。 - 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
- 你可以按任意顺序返回答案。
- 示例:
|
|
1.2 解题思路
1.2.1 枚举($$ O(n^2) $$)
|
|
1.2.2 Map($$O(n)$$)
|
|
2 两数相加
2.1 题目介绍
- 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。
- 请你将两个数相加,并以相同形式返回一个表示和的链表。
- 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
|
|
2.2 解题思路
2.2.1 声明单向链表构造函数
|
|
3 无重复字符的最长子串
3.1 题目介绍
- 给定一个字符串
s
,请找出其中不含有重复字符的最长子串的长度 - 示例
|
|
3.2 解题思路
- 输入字符串:
abcdbe
,在遍历字符串时,我们使用数组subStr
存储不重复的子串。 - 假定我们有两个指针:左指针和右指针,在初始时都指向了字符串的第一个字符; 开始遍历时,右指针开始挪动,将不重复的字符依次放入到数组中。
- 如果遇到某个字符已经在数组
subStr
中,则说明当前不重复子串已经是最长了,需要开启新的不重复子串了。 - 新的不重复子串从哪里开始记录呢?!
重点:
从该重复字符在不重复子串中的下一个位置开始记录。- 在该case中,第一次记录的不重复子串为
abcd
。下一个字符b
开始重复,新的一个不重复子串开始位置为c
,即字符b
第一次出现的位置的下一个字符。 - 此刻的处理方式是移动左指针位置,即将数组
subStr
中的元素从开头开始进行删除,直到移除重复字符b
。 - 将当前的字符
b
存储到subStr
中。 - 比对当前不重复子串的长度与历史记录的最大长度,取最大值。
- 重复上述的过程,直到字符串遍历结束。
|
|
4 回文数
4.1 题目介绍
-
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
-
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
-
例如,121 是回文,而 123 不是。
-
示例:
|
|
4.2 解题思路
- 判断回文字符串的逻辑
- 基于首位的索引进行判断
- 该字符串是否只有一个字符(肯定是true)
- 该字符串是否是首位一致(否则肯定是false)
- 最后判断s[i]和s[j]中间是否只有一个字符(如果是返回true,否则进入下一次递归)
|
|
5 扁平数据(互相)转tree
5.1 扁平数据转tree
5.2 tree转扁平数据
Author gsemir
LastMod 2022-03-14