
LeetCode
wchzh2015
这个作者很懒,什么都没留下…
展开
-
4. 寻找两个有序数组的中位数
题目描述:给定两个大小为 m 和 n 的有序数组nums1和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [...原创 2019-05-24 22:24:45 · 142 阅读 · 0 评论 -
136. 只出现一次的数字
题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4算法:位运算的应用class Solution {...原创 2019-05-24 23:23:20 · 126 阅读 · 0 评论 -
260. 只出现一次的数字 III
题目描述:给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:结果输出的顺序并不重要,对于上面的例子,[5, 3]也是正确答案。 你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?算法:位运算的应用cl...原创 2019-05-25 00:21:11 · 119 阅读 · 0 评论 -
389. 找不同
题目描述:给定两个字符串s和t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在t中被添加的字母。示例:输入:s = "abcd"t = "abcde"输出:e解释:'e' 是那个被添加的字母。算法1:行排序,然后遍历比较每个字符class Solution {public:...原创 2019-05-25 10:41:32 · 170 阅读 · 0 评论 -
268. 缺失数字
题目描述:给定一个包含0, 1, 2, ..., n中n个数的序列,找出 0 ..n中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?算法1使用等差数列class Solut...原创 2019-05-25 17:45:37 · 127 阅读 · 0 评论 -
137. 只出现一次的数字 II
题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例2:输入: [0,1,0,1,0,1,99]输出: 99算法1:使用python3, 用了额外的空间集合 se...原创 2019-05-25 21:01:06 · 158 阅读 · 0 评论 -
240. 搜索二维矩阵 II
题目描述:编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。 每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10...原创 2019-05-26 00:01:17 · 132 阅读 · 0 评论 -
295. 数据流的中位数
题目描述:中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4]的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。 double findMedian() - 返回目前所有元素的中位数...原创 2019-05-26 09:50:22 · 243 阅读 · 0 评论 -
703. 数据流中的第K大元素
题目描述:设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的KthLargest类需要一个同时接收整数k和整数数组nums的构造器,它包含数据流中的初始元素。每次调用KthLargest.add,返回当前数据流中第K大的元素。示例:int k = 3;int[] arr = [4,5,8,2];KthLarg...原创 2019-05-26 10:25:02 · 270 阅读 · 0 评论 -
215. 数组中的第K个最大元素
题目描述:在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入:[3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入:[3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。...原创 2019-05-26 10:53:15 · 196 阅读 · 0 评论 -
414. 第三大的数
题目描述:给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: [1, 2]输出: 2解释: 第三大的数不存在, 所以返回最大的数 2 .示例 3:输入: [2, 2, 3, 1]输出: 1...原创 2019-05-26 11:40:27 · 181 阅读 · 0 评论 -
155. 最小栈
题目描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minSt...原创 2019-05-26 13:07:24 · 133 阅读 · 0 评论 -
239. 滑动窗口最大值
题目描述:给定一个数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口k内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值-...原创 2019-05-26 13:50:08 · 140 阅读 · 0 评论 -
169. 求众数
题目描述:给定一个大小为n的数组,找到其中的众数。众数是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2算法:参考:169. 求众数用到的算法是:摩尔投票算法算法在局部变量中定义一个序列元...原创 2019-05-26 13:53:07 · 129 阅读 · 0 评论 -
88. 合并两个有序数组
题目描述:给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m =...原创 2019-05-26 14:09:43 · 253 阅读 · 0 评论 -
21. 合并两个有序链表
题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4算法:/** * Definition for singly-linked list. * struct ListNode...原创 2019-05-27 00:12:40 · 121 阅读 · 0 评论 -
292. Nim 游戏
题目描述:你和你的朋友,两个人一起玩Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入:4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 ...原创 2019-05-22 17:21:20 · 139 阅读 · 0 评论 -
198. 打家劫舍
题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1...原创 2019-05-27 00:12:14 · 124 阅读 · 0 评论 -
225. 用队列实现栈
题目描述:使用队列实现栈的下列操作:push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back,peek/pop from front,size, 和is empty这些操作是合法的。 你所使用的语言也许不支持队列...原创 2019-05-22 20:09:24 · 137 阅读 · 0 评论 -
125. 验证回文串
题目描述:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false算法1:使用额外的两个字符串class Solu...原创 2019-05-27 11:06:43 · 147 阅读 · 0 评论 -
680. 验证回文字符串 Ⅱ
题目描述:给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。算法:双指针,从左右两端开始验证是否是回文串,若左右两边的字符不相等的时候...原创 2019-05-27 11:23:58 · 231 阅读 · 0 评论 -
409. 最长回文串
题目描述:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。算法:回文串中要么出现的字符都...原创 2019-05-27 14:36:58 · 176 阅读 · 0 评论 -
344. 反转字符串
题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是ASCII码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]...原创 2019-05-27 14:42:46 · 132 阅读 · 0 评论 -
541. 反转字符串 II
题目描述:给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。示例:输入: s = "abcdefg", k = 2输出: "bacdfeg"要求:该字符串只包含小写的英文字母。...原创 2019-05-27 15:13:23 · 164 阅读 · 0 评论 -
5027. Remove Vowels From a String
题目描述:Given a stringS, remove the vowels'a','e','i','o', and'u'from it, and return the new string.Example 1:Input: "leetcodeisacommunityforcoders"Output: "ltcdscmmntyfrcdrs"Example 2:...原创 2019-05-27 15:21:42 · 411 阅读 · 0 评论 -
345. 反转字符串中的元音字母
题目描述:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"说明:元音字母不包含字母"y"。算法:这道题中包含的元音字母有: a, u, e ,i ,o, A, U, E, I, Oclass Solution ...原创 2019-05-27 15:29:52 · 123 阅读 · 0 评论 -
867. 转置矩阵
题目描述:给定一个矩阵A,返回A的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]提示:1 <= ...原创 2019-05-27 16:03:32 · 186 阅读 · 0 评论 -
387. 字符串中的第一个唯一字符
题目描述:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.注意事项:您可以假定该字符串只包含小写字母。算法:第一次遍历字符串求得各字符出现次数. 第二次遍历字符串找出第一个出现次数为1的字符.class Solut...原创 2019-05-28 11:36:58 · 130 阅读 · 0 评论 -
1. 两数之和
题目描述:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0...原创 2019-05-23 10:22:39 · 127 阅读 · 0 评论 -
653. 两数之和 IV - 输入 BST
题目描述:给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True案例 2:输入: 5 / \ 3 6 / \ \2 4 7...原创 2019-05-23 15:35:29 · 232 阅读 · 0 评论 -
2. 两数相加
题目描述:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:...原创 2019-05-23 16:31:46 · 145 阅读 · 0 评论 -
LeetCode 刷题记录
目录参考学习博客题解:解题汇总:分类汇总逻辑运算符的应用二分查找树的应用:图的应用: (拓扑排序,DFS,BFS)链表应用回溯法,深度优先搜索,广度优先搜索 ,贪心法,分治法动态规划,双指针法:进制转换问题:字符串问题:C++ STL 中 map ,priority_queue,unordered_map应用:C++ STL 中 ne...原创 2019-05-18 18:19:43 · 526 阅读 · 0 评论 -
162. 寻找峰值
题目描述:峰值元素是指其值大于左右相邻值的元素。给定一个输入数组nums,其中nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该...原创 2019-05-30 20:54:18 · 113 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
题目描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0算法:二分查找cl...原创 2019-05-30 21:54:11 · 144 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
题目描述:给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(logn) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2:输入: nums = [5,...原创 2019-05-30 22:19:50 · 127 阅读 · 0 评论 -
300. 最长上升子序列
题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是[2,3,7,101],它的长度是 4说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为O(n2) 。进阶:你能将算法的时间复杂度降低到O(nlogn)...原创 2019-05-28 12:55:26 · 121 阅读 · 0 评论 -
322. 零钱兑换
题目描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输...原创 2019-05-28 20:13:48 · 127 阅读 · 0 评论 -
279. 完全平方数
题目描述:给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于n。你需要让组成和的完全平方数的个数最少。示例1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.算法1:动态规划class Solution {...原创 2019-05-28 20:11:14 · 177 阅读 · 0 评论 -
1025. 除数博弈
题目描述:爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字N。在每个玩家的回合,玩家需要执行以下操作:选出任一x,满足0 < x < N且N % x == 0。 用N - x替换黑板上的数字N。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回True,否则返回false。假设两个玩家...原创 2019-06-05 18:56:04 · 644 阅读 · 0 评论 -
24. 两两交换链表中的节点
题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.算法:/** * Definition for singly-linked list. * struct ListNode {...原创 2019-05-31 18:56:19 · 120 阅读 · 0 评论