11 2018 档案
摘要:给定一个矩阵 A, 返回 A 的转置矩阵。 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例 1: 示例 2: 提示: 最简单最暴力的做法就是花O(1)的额外空间,来把矩阵转置过去。i,j索引调换就好了。 其他办法没有看到相关题解,这是数学的范畴,暂不深究。 代码如下:
阅读全文
摘要:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 示例 2: 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以“引用”方
阅读全文
摘要:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素
阅读全文
摘要:给定两个数组,编写一个函数来计算它们的交集。 示例 1: 示例 2: 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。 进阶: 如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 的大小比 nums2 小很多,哪种方法更优?
阅读全文
摘要:给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 注意: 您可以假设树(即给定的根节点)不为 NULL。 这题呢,根据题意,采取层级遍历的方式。用一个队列来存放当前层的所有节点,始终设置层级遍历完之后,队列中最左边的节点的值为我们需要的答案,一直遍历到最后一层,得到正确答案。效
阅读全文
摘要:集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。 给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
阅读全文
摘要:给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以
阅读全文
摘要:给定一个整数,将其转化为7进制,并以字符串形式输出。 示例 1: 示例 2: 注意: 输入范围是 [-1e7, 1e7] 。 这种题型比较经典了。想法模拟人工做法,将其对7取模,得到的数字保存在字符串的最前面,并把那个数除以7,重复以上过程。 不过要注意0的特判,以及如果是负数,要在输出前添加负号。
阅读全文
摘要:如果数组是单调递增或单调递减的,那么它是单调的。 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。 当给定的数组 A 是单调数组时返回 true,否则返回 false。 示例 1:
阅读全文
摘要:给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意: 示例 1: 示例 2: 首先拿到这题,比较简单的一个思路是把负数转换为正数的形式(因为我们知道,负数在计算机中的存放值=2^N+该负数,N为存储的位数)。但是在JAVA中,这个思路会在num值为-
阅读全文
摘要:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 注意: 这道题比较简单,有一种主流的思路是模拟逻辑电路相加的做法。实现对字符串补0,让两个字符串都达到同样长度,然后再设置一个进位标志位,逐次相加。 这里要注意相加到最后的进位问题,记得增加进位位。 其他的做法不再累述,特别是使用
阅读全文
摘要:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 示例 2: 说明: 链表至少包含两个节点。 链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表中的一个有效节
阅读全文
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 注意空字符串可被认为是有效字符串。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 这道题的思路比较简单,使用栈存放左括号,一旦遇到右括号就弹出栈顶元素进行判断是否配对,如
阅读全文
摘要:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 拿到这题,一开始的思路是强行遍历右节点,后来发现如果右节点的深度低于左节点时,左节点也是输于右视图的一部分,答案错误。然后参考了相关做法,发现正确的做法应该是层次遍历,判断出每一层的所有内容,然后取最
阅读全文
摘要:翻转一棵二叉树。 示例: 输入: 输出: 备注:这个问题是受到 Max Howell 的 原问题 启发的 : 这道题比较简单,就是一路判断下去就是了。注意在二叉树为空,或者左右节点为空时做个特判。 代码如下:
阅读全文
摘要:峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 示例 1: 示例 2: 说明
阅读全文
摘要:假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。 示例 1: 示例 2: 提示: 拿到这个题,第一个
阅读全文
摘要:给定一个整数,写一个函数来判断它是否是 3 的幂次方。 示例 1: 示例 2: 示例 3: 示例 4: 这题比较简单,循环或者递归可以解决问题。但是也可以使用对数求解的方法。这就输于数学的范畴了。由于是新手一开始没有想到。不过循环的做法时间比较快,也就没有继续深究下去了。 参考博客可以看: http
阅读全文
摘要:给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 本题有多种解法,可参考https://blog.csdn.net/xiezongsheng1990/article/details/79574892的代码。时间关系不累述。 递归算法的代码如下:
阅读全文
摘要:给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。 这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应模式。 示例1: 示例 2: 示例 3: 示例 4: 说明:你可以假设 pattern 只
阅读全文
摘要:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 示例 2: 说明: 所有输入只包含小写字母 a-z 。 这题比较简单,采用O(m*n)的算法复杂度,即对每个串内的字符一个字符一个字符判断,可以比较容易解决问题。不过要注意字符串数组越界的问题。 代
阅读全文
摘要:不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。 get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。 remove(key):如果映射中存
阅读全文
摘要:假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 你可以假设数组中不存在重复元素。 示例 1: 示例 2: 这题拿到手发现很简单。。实际上也的确比较简单。我以为会挖个什么坑在
阅读全文
摘要:和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 说明: 输入的数组长度最大不超过20,000. 这道题问题很简单,但是一开始理解错题意,认为数组的子序列是截取数组的某一部分而不能改变其位置。
阅读全文
摘要:给一个 C++ 程序,删除程序中的注释。这个程序source是一个数组,其中source[i]表示第i行源码。 这表示每行源码由\n分隔。 在 C++ 中有两种注释风格,行内注释和块注释。 字符串// 表示行注释,表示//和其右侧的其余字符应该被忽略。 字符串/* 表示一个块注释,它表示直到*/的下
阅读全文
摘要:给定一个单词,你需要判断单词的大写使用是否正确。 我们定义,在以下情况时,单词的大写用法是正确的: 否则,我们定义这个单词没有正确使用大写字母。 示例 1: 示例 2: 注意: 输入是由大写和小写拉丁字母组成的非空单词。 这题比较简单。第一个想法是做三个判断。一个判断是不是全部小写,一个判断是不是全
阅读全文
摘要:给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 示例 2: 示例 3:
阅读全文
摘要:每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名。 除了小写字母,这些电子邮件还可能包含 ',' 或 '+'。 如果在电子邮件地址的本地名称部分中的某些字符之间添加句点('
阅读全文