leetcode
qican_7
这个作者很懒,什么都没留下…
展开
-
移除链表元素
题目描述删除链表中等于给定值val的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5很久没写java代码了,来一道简单的练练手实现public class ListNode { int val; ListNod...原创 2020-04-28 22:45:18 · 126 阅读 · 0 评论 -
串联所有单词的子串
描述给定一个字符串s和一些长度相同的单词words。找出 s 中恰好可以由words 中所有单词串联形成的子串的起始位置。注意子串要与words 中的单词完全匹配,中间不能有其他字符,但不需要考虑words中单词串联的顺序。示例 1:输入: s = "barfoothefoobarman", words = ["foo","bar"]输出:[0,9]...原创 2020-03-26 23:54:25 · 668 阅读 · 0 评论 -
删除排序数组中的重复项 II
描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数...原创 2020-03-26 19:22:03 · 173 阅读 · 0 评论 -
删除排序数组中的重复项
描述给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面...原创 2020-03-26 12:05:46 · 104 阅读 · 0 评论 -
寻找两个有序数组的中位数
描述给定两个大小为 m 和 n 的有序数组nums1 和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3,...原创 2020-03-25 21:31:55 · 107 阅读 · 0 评论 -
数学表达式
示例1输入:str = "3+1*4"输出:7示例2输入:str = "48*((70-65)-43)+8*1"输出:-1816思路1. 对括号内的部分进行递归;2. 运算符优先级的问题,遇到"*" 和 "/" 号优先计算,遇到加和减暂时不处理,最后统一处理;3. 对于像3 + (-3)中,后面的(-3) 部分,在负号前加一个0变成(0-3),使之成...原创 2019-10-22 17:48:15 · 1812 阅读 · 0 评论 -
最长有效括号
示例输入:(()(())输出:6实现int maxLenBracket(string data) { if (data.length() == 0) { return 0; } vector<int> dp(data.length(), 0); int pre = 0; int res = 0; for (int i = 1; ...原创 2019-10-22 15:03:22 · 194 阅读 · 0 评论 -
两个列表的最小索引总和
题目描述假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。示例1输入:["Shogun", "Tapioca Express", "Burger King", "KFC"]["P...原创 2019-10-21 17:18:25 · 90 阅读 · 0 评论 -
相交链表
题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例1输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解...原创 2019-10-21 16:58:59 · 82 阅读 · 0 评论 -
两数相加
题目描述给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转示例输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -&...原创 2019-10-21 16:14:37 · 69 阅读 · 0 评论 -
两数相加
题目描述给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -...原创 2019-10-21 16:08:14 · 112 阅读 · 0 评论 -
字符串相乘
题目描述给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。示例1输入: num1 = "2", num2 = "3"输出: "6"示例2输入: num1 = "123", num2 = "456"输出: "56088"思路拆分,拆分成第一个数的每一位与第二个数相乘,然后将...原创 2019-10-21 15:44:56 · 203 阅读 · 0 评论 -
单词接龙(2)
题目描述给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的...原创 2019-10-18 10:41:13 · 317 阅读 · 0 评论 -
单词接龙
题目描述给定两个单词(beginWord和 endWord)和一个字典,找到从beginWord 到endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。说明如果不存在这样的转换序列,返回 0。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设 b...原创 2019-10-18 10:31:52 · 140 阅读 · 0 评论 -
滑动谜题
题目描述在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用0来表示.一次移动定义为选择0与一个相邻的数字(上下左右)进行交换.最终当板board的结果是[[1,2,3],[4,5,0]]谜板被解开。给出一个谜板的初始状态,返回最少可以通过多少次移动解开谜板,如果不能解开谜板,则返回 -1 。示例输入:bo...原创 2019-10-17 16:52:42 · 276 阅读 · 0 评论 -
相似度为K的字符串
题目描述如果可以通过将 A 中的两个小写字母精确地交换位置 K 次得到与 B 相等的字符串,我们称字符串A和B的相似度为 K(K为非负整数)。给定两个字母异位词A和B,返回 A 和 B的相似度 K 的最小值。示例1输入:A = "ab", B = "ba"输出:1示例2输入:A = "abc", B = "bca"输出:2示例3...原创 2019-10-17 16:28:15 · 859 阅读 · 0 评论 -
情侣牵手
题目描述N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手。 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起。 一次交换可选择任意两人,让他们站起来交换座位。人和座位用0到2N-1的整数表示,情侣们按顺序编号,第一对是(0, 1),第二对是(2, 3),以此类推,最后一对是(2N-2, 2N-1)。这些情侣的初始座位row[i]是由最初始坐在第 i ...原创 2019-10-17 16:00:43 · 265 阅读 · 0 评论 -
缺失的第一个正数
题目描述给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例1输入: [1,2,0]输出: 3示例2输入: [3,4,-1,1]输出: 2示例3输入: [7,8,9,11,12]输出: 1说明你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。思路提供两种思路:hash 计数:需要额外的空间。所有出...原创 2019-10-17 15:39:05 · 137 阅读 · 0 评论 -
前K个高频元素
题目描述给定一个非空的整数数组,返回其中出现频率前k高的元素。示例1输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例2输入: nums = [1], k = 1输出: [1]说明你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度必须优于 O(nlogn...原创 2019-10-17 14:55:41 · 116 阅读 · 0 评论 -
数组中的第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个元素,但是时间复杂度较高。经典的时间复杂度较低的...原创 2019-10-17 11:50:16 · 107 阅读 · 0 评论 -
旋转图像
题目描述给定一个n×n的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例1给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2],...原创 2019-10-17 10:30:28 · 130 阅读 · 0 评论 -
子集(2)(含重复数字)
题目描述给定一个可能包含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]思路/** * 这个题目的解题思想是这样的。由于nums内的元素存在重复,那么我们必然需要 * 考虑如果...原创 2019-10-17 10:19:42 · 280 阅读 · 0 评论 -
子集
题目描述给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例输入: nums = [1,2,3]输出:[ [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]思路递归,需要注意递归的细节。实现void getSub...原创 2019-10-16 22:36:46 · 85 阅读 · 0 评论 -
数字范围按位与
题目描述给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例1输入: [5,7]输出: 4示例2输入: [0,1]输出: 0思路1当一个数+1时,总会有这么一个规律“某一位后的数字,全部被置为相反数”。举个例子:010111 + 1 = ...原创 2019-10-16 22:22:52 · 695 阅读 · 0 评论 -
只出现一次的数字
题目描述给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例输入: [1,2,1,3,2,5]输出: [3,5]思路先将所有的数异或,记录二进制结果中第一次出现1的位置,按位置将原集合分成两个子集,对两个子集分别取异或和得到两个数即为结果。示例中所有的数取异或和的结果为6,二进制表示为110,首次出现1 的...原创 2019-10-16 22:06:30 · 70 阅读 · 0 评论 -
受标签影响的最大值
题目描述我们有一个项的集合,其中第i项的值为values[i],标签为labels[i]。我们从这些项中选出一个子集S,这样一来:|S| <= num_wanted 对于任意的标签 L,子集 S 中标签为 L的项的数目总满足<= use_limit。返回子集S的最大可能的和。示例1输入:values = [5,4,3,2,1], lab...原创 2019-10-16 21:01:02 · 216 阅读 · 0 评论 -
IPO
题目描述假设 力扣(LeetCode)即将开始其 IPO。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。给定若干个项目。对于每个项目 i,它都有一个纯利润 Pi,并且需要最小的资本 Ci 来启动相应的项目。最初,你有...原创 2019-10-16 17:20:30 · 198 阅读 · 0 评论 -
单调递增的数字
题目描述给定一个非负整数N,找出小于或等于N的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字x和y满足x <= y时,我们称这个整数是单调递增的。)示例1输入: N = 10输出: 9示例2输入: N = 1234输出: 1234示例3输入: N = 1234输出: 1234示例4...原创 2019-10-16 16:11:39 · 197 阅读 · 0 评论 -
移掉K位数字
题目描述给定一个以字符串表示的非负整数num,移除这个数中的k位数字,使得剩下的数字最小。注意num的长度小于 10002 且≥k。 num不会包含任何前导零。示例1输入: num = "1432219", k = 3输出: "1219"解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。示例2输入: num =...原创 2019-10-16 11:09:10 · 311 阅读 · 1 评论 -
链表中的下一个更大的节点
题目描述给出一个以头节点head作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, ... 。每个节点都可能有下一个更大值(next larger value):对于node_i,如果其next_larger(node_i)是node_j.val,那么就有j > i且node_j.val > node_i.val,...原创 2019-10-15 22:19:10 · 594 阅读 · 0 评论 -
删除链表的倒数第N个节点
题目描述给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明给定的n保证是有效的。进阶你能尝试使用一趟扫描实现吗?思路快满指针,快指针先走n步,然后快满...原创 2019-10-15 19:44:28 · 77 阅读 · 0 评论 -
颜色分类
题目描述给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。示例输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 ...原创 2019-10-15 19:28:05 · 216 阅读 · 0 评论 -
排序链表
题目描述在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例1输入: 4->2->1->3输出: 1->2->3->4示例2输入: -1->5->3->4->0输出: -1->0->3->4->5思路主要考察3个知识点, * 知...原创 2019-10-15 17:17:07 · 79 阅读 · 0 评论 -
合并K个排序链表
题目描述合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6思路分治法实现struct ListNode { int val; ...原创 2019-10-15 16:42:28 · 66 阅读 · 0 评论 -
反转链表(2)
题目描述反转从位置m到n的链表。请使用一趟扫描完成反转。说明1 ≤m≤n≤ 链表长度。示例输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL思路难点在于理清节点翻转时的指向关系。实现struct...原创 2019-10-15 15:02:33 · 100 阅读 · 0 评论 -
回文链表
题目描述请判断一个链表是否为回文链表。示例1输入: 1->2输出: false示例2输入: 1->2->2->1输出: true思路其一,find mid node 使用快慢指针找到链表中点。 其二,reverse 逆序后半部分。 其三,check 从头、中点,开始比较是否相同。实现struct ListNode ...原创 2019-10-15 11:38:49 · 83 阅读 · 1 评论 -
回文数
题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1输入: 121输出: true示例2输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例3输入: 10输出: false解释: 从右向左读, 为 01 。因此它不...原创 2019-10-15 10:55:41 · 151 阅读 · 0 评论 -
回文对
题目描述给定一组唯一的单词, 找出所有不同的索引对(i, j),使得列表中的两个单词,words[i] + words[j],可拼接成回文串。示例1输入: ["abcd","dcba","lls","s","sssll"]输出: [[0,1],[1,0],[3,2],[2,4]]解释: 可拼接成的回文串为 ["dcbaabcd","abcddcba","slls","...原创 2019-10-14 20:36:57 · 166 阅读 · 0 评论 -
组合总数
题目描述给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明所有数字(包括target)都是正整数。 解集不能包含重复的组合。示例1输入: candidates = [2,3,6,7], target =...原创 2019-10-14 19:46:44 · 112 阅读 · 0 评论 -
电话号码的字母组合
题目描述给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].实现void getPhone(vector<string>&...原创 2019-10-14 19:30:19 · 175 阅读 · 0 评论