自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

whdAlive 's blog

Coding than talking

  • 博客(128)

原创 LeetCode 高级 - 摆动排序 II

高级 [排序&搜索] - 摆动排序 II给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。示例 1:输入: nums = [1, 5, 1, 1, 6, 4]输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6]示例 2:输入: nums = [1,...

2018-05-31 14:37:22 1615 1

原创 LeetCode 高级 - 复制带随机指针的链表

复制带随机指针的链表给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深度拷贝。 分析该题参考 剑指Offer 复杂链表的复制。思路:在原链表中插入“影子节点”根据原节点random 更新影子节点的random分离原链表和“影子链表”,该链表即为深度拷贝的链表图示: 代码/**...

2018-05-31 14:04:39 1916

原创 Android - Style 和 Theme 的那点儿事

Style and Themes简介Android 中,Styles 和 Themes 是很重要的一块,很大程度上影响着应用的美观程度,虽然可能在座的广大程序猿要说“好不好看得看 UI 设计啊,即便不好看我也不背锅”,但是如果不了解 Style 和 Theme,当 UI 提供给你一个漂亮到惊为天人的设计,你却无法在 Android 中将其还原,这岂不是很尴尬。。因此可以说Style 和...

2018-05-30 18:29:42 808

原创 LeetCode 高级 - Friend Circles

Friend Circles班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果Mi = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已...

2018-05-30 09:58:48 1025

原创 LeetCode 高级 - Lowest Common Ancestor of a Binary Tree 二叉树的最近公共祖先

Lowest Common Ancestor of a Binary Tree给定一棵二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义: “对于有根树T的两个结点u、v,最近公共祖先表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。”(一个节点也可以是它自己的祖先)例如,给定如下二叉搜索树: root = [3,5,1,6,2,0,8,null,nu...

2018-05-30 09:26:30 85

原创 LeetCode 高级 - 螺旋矩阵

螺旋矩阵给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12...

2018-05-29 12:30:02 1693

原创 LeetCode 高级 - 正则表达式匹配

正则表达式匹配给定一个字符串 (s) 和一个字符模式 (p)。实现支持 ‘.’ 和 ‘*’ 的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s...

2018-05-29 12:11:37 4514 5

原创 LeetCode 高级 - Queue Reconstruction by Height

Queue Reconstruction by Height假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0],...

2018-05-28 13:05:29 2558

原创 LeetCode 高级 - 最大数

最大数给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。分析比较直观的想法是,将数组排序,再输出为字符串。那么问题来了,排序规则是什么?很简单,将两个数字颠倒连接比较就...

2018-05-28 12:58:18 2649

原创 LeetCode 中级 - 从前序与中序遍历序列构造二叉树

从前序与中序遍历序列构造二叉树根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7分析关键在于前序遍历和中序遍历...

2018-05-28 12:46:53 3298 4

原创 LeetCode 高级 - 数据流的中位数

数据流的中位数中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。...

2018-05-27 11:18:10 754 1

原创 LeetCode 高级 - 单词拆分

单词拆分给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leet...

2018-05-27 11:10:25 1694

原创 LeetCode 高级 - Perfect Squares

Perfect Squares给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.分析两种方法:常规动态规划,推状态转移方...

2018-05-27 11:05:43 111

原创 LeetCode 高级 - Best Time to Buy and Sell Stock with Cooldown

Best Time to Buy and Sell Stock with Cooldown给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。...

2018-05-27 10:59:19 112

原创 LeetCode 高级 - 乘积最大子序列

乘积最大子序列给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。分析如果该题全为正数,那么就只是一道简单题,只要记录到i时...

2018-05-27 10:51:53 1952

原创 LeetCode 高级 - Kth Smallest Element in a Sorted Matrix

Kth Smallest Element in a Sorted Matrix给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。说明...

2018-05-27 10:38:10 269

原创 LeetCode 高级 - 被围绕的区域

被围绕的区域给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的...

2018-05-27 10:35:47 1777

原创 LeetCode 高级 - 合并K个元素的有序链表

合并K个元素的有序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6分析采用最小堆的思想,将K个链表的头节点放入优先队列中,遍历时返回队首元素,并把该...

2018-05-27 10:31:01 4504

原创 LeetCode 高级 - Basic Calculator II

Basic Calculator II实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格。 整数除法仅保留整数部分。示例 1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5说明:你可以假设所给定的表达...

2018-05-26 10:43:27 415

原创 LeetCode 高级 - 寻找重复数

寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间,包括 1 和 n ,可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时...

2018-05-26 10:37:03 4491

原创 LeetCode 高级 - 第一个缺失的正数

第一个缺失的正数给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。分析由于线性时间和常数空间的要求,我们开不了数组,用不了哈...

2018-05-26 10:22:40 4996

原创 LeetCode 高级 - 四数相加 II

四数相加 II给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228- 1 之间,最终结果不会超过 231 - 1 。例如:输入:...

2018-05-26 10:19:38 2752 1

原创 LeetCode 高级 - Product of Array Except Self

Product of Array Except Self给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在...

2018-05-26 10:13:24 303

原创 LeetCode 中级 - Task Scheduler

Task Scheduler给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同...

2018-05-25 12:55:36 309

原创 LeetCode 中级 - 求众数

求众数给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2分析map记录啊,遍历啊,这题就A了啊代码 class Solution { ...

2018-05-25 12:49:39 326

原创 LeetCode 中级 - 逆波兰表达式求值

逆波兰表达式求值根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) *...

2018-05-25 12:47:43 235

原创 LeetCode 中级 - 两整数之和

两整数之和不使用运算符 + 和-,计算两整数a 、b之和。示例:若 a = 1 ,b = 2,返回 3。分析这道题实际上就是在考 计算机底层是如何实现加减法的。很明显计算机本身是不动+ - 的,它的底层是通过 异或 和 与 两个位运算来实现的,异或 是不带进位的结果, 与 是进位。代码“ class Solution { public i...

2018-05-25 12:42:19 1006

原创 LeetCode 中级 - x 的平方根

x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。分析只是使用了二分进行优化代...

2018-05-25 12:33:58 301

原创 LeetCode 中级 - Excel表列序号

Excel表列序号给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例 2:输入: "AB"输出: 28...

2018-05-25 12:28:18 552

原创 LeetCode 中级 - 阶乘后的零

阶乘后的零给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。分析核心在于:怎么得到10?答:2的倍数*5其次,2和5谁出现的频率高?答:显然是5,...

2018-05-25 12:25:36 402

原创 LeetCode 中级 - 快乐数

快乐数编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例: 输入: 19输出: true解释: 1^2 + 9^2 = 828^2 + 2^2 = 686^2 + 8^2 = 100...

2018-05-24 14:09:09 309

原创 LeetCode 中级 - Insert Delete GetRandom O(1)

Insert Delete GetRandom O(1)设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。示例 :// 初始化一个空的集合。Ra...

2018-05-24 14:05:08 348

原创 LeetCode 中级 - Longest Increasing Subsequence

Longest Increasing Subsequence给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶:...

2018-05-24 13:53:04 96

原创 LeetCode 中级 - 零钱兑换

零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -...

2018-05-24 13:45:01 927

原创 LeetCode 中级 - 不同路径

不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解...

2018-05-24 12:59:30 538

原创 LeetCode 中级 - 跳跃游戏

跳跃游戏给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为...

2018-05-24 12:56:26 786

原创 LeetCode 中级 - Search a 2D Matrix II

Search a 2D Matrix II编写一个高效的算法来搜索 m x n 矩阵中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。例如,给定以下矩阵 matrix :[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22],...

2018-05-24 12:45:12 1252

原创 LeetCode 中级 - 搜索旋转排序数组

搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,...

2018-05-24 12:36:05 2533

原创 LeetCode 中级 - 合并区间

合并区间给出一个区间的集合,请合并所有重叠的区间。示例 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]]解释: 区间 [1,4] 和 [4,5] 可被视为重...

2018-05-24 12:30:19 897

原创 LeetCode 中级 - 搜索范围

搜索范围给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,...

2018-05-24 12:25:34 294

空空如也

空空如也

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