给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1: 给定的树 s: ``` 3 / \ 4 5 / \ 1 2 ``` 给定的树 t: ``` 4 / \ 1 2 ``` 返回.......
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在**原地修改输入数组**并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 **示例 1:** ``` 给定 nums = [3,2,2,3], val =.......
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数**大于** ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 **示例 1:** ``` 输入: [3,2,3] 输出: 3 ``` **示例 2:** ``` 输入: [2,2,1,1,1,2,2] 输出:.......
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 ![](http://ww1.sinaimg.cn/large/006wYWbGly1g19h6pmm6lj30bg04jaa1.jpg) 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6.......
给出一个区间的集合,请合并所有重叠的区间。 **示例 1:** ``` 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. ``` **示例 2:** ``` 输入: [[1,4],[4,5]] 输出: [[1,5]] 解释:.......
班上有 **N** 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 **N * N** 的矩阵 **M**,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j.......
给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。 **示例:** ``` 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 ``` **思路** 思路一: 通过 dict(哈希表) 去实现: 遍历列表,假设字典为 hash_dict, 列表为.......
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。 **示例1:** ``` 输入: s1 = "ab" s2 = "eidbaooo" 输出: True 解释: s2 包含 s1 的排列之一 ("ba"). ``` **示例2:** ``` 输入: s1= "ab" s2 =.......
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 **示例 1:** ``` 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 ``` **示例 2:** ``` 输入: "cbbd" 输出: "bb" ``` **解法** ```python class Solution: def.......
给出两个 **非空** 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 **逆序** 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 **示例:** ``` 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7.......
给定一个字符串,请你找出其中不含有重复字符的 **最长子串** 的长度。 **示例 1:** ``` 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 ``` **示例 2:** ``` 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 ``` **示例.......
给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。 数学表达式如下: >如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,

使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。 **说明**: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。 **示例.......

1 2 3 4

About Me


一个喜欢瞎折腾的程序员;每年学习一门新的语言;写过 Python、Golang、Rust、Dart、Java、PHP、Javascript;目前正在学习 Swift;在编程的路上一路向前...

more about me

Follow Me



Wechat

订阅公众号获取最新文章

FRIENDS LINK

Marvin
胡峻峥
非理勿试
Joey Yang
思有云 - IOIOX
0101sec
SeaMonster