
Leetcode算法面试题汇总
Leetcode高频算法面试题,本专栏主打多种解法和思路,并比较性能优劣。
起酥~
我们并不是根据代码演算结果的计算机,而是懂得在时间长河中感受、反思、咀嚼的人类。
展开
-
Leetcode39. 组合总和
给定一个无重复元素的正整数数组candidates和一个正整数target,找出candidates中所有可以使数字和为目标数target的唯一组合。candidates中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为target 的唯一组合数少于 150 个。提示:1 <= candidates.length <= 301 <= candidates[i] <= 200candida...原创 2021-08-31 18:53:30 · 155 阅读 · 0 评论 -
Leetcode40. 组合总和 II
给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。示例1:输入: candidates =[10,1,2,7,6,1,5], target =8,输出:[[1,1,6],[1,2,5],[1,7],[2,6]]示例2:输入: candidates =[2,5,2,1,2], ta...原创 2021-08-31 18:15:41 · 288 阅读 · 0 评论 -
Leetcode216. 组合总和 III
找出所有相加之和为n 的k个数的组合。组合中只允许含有 1 -9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum-...原创 2021-08-27 16:39:18 · 135 阅读 · 0 评论 -
Leetcode17. 电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number 回溯算法 本题注意点:本题虽然是一个组合问题,但是组合的不是同一个字符串中的字符,每次往结果中添加的应该是下一个字符串 所以...原创 2021-08-27 16:36:48 · 172 阅读 · 0 评论 -
Leetcode77. 组合
给定两个整数n和k,返回范围[1, n]中所有可能的k个数的组合。你可以按任何顺序返回答案。示例 1:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]示例 2:输入:n = 1, k = 1输出:[[1]]提示:1 <= n <= 201 <= k <= n来源:力扣(LeetCode)链接:https://leet...原创 2021-08-26 13:42:18 · 124 阅读 · 0 评论 -
Leetcode131.分割回文串
给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。回文串是正着读和反着读都一样的字符串。示例 1:输入:s = "aab"输出:[["a","a","b"],["aa","b"]]示例 2:输入:s = "a"输出:[["a"]]提示:1 <= s.length <= 16s 仅由小写英文字母组成作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetbo...原创 2021-08-24 16:23:37 · 116 阅读 · 0 评论 -
Leetcode125.验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。来源:力扣(LeetCode)题目链接:https://leetcode-cn.com/problems/valid-palindrome/法1:双指针执行用时:5ms,在所有Java提交中击败了36.13%的用户内存消耗:38.6MB,在所有Java提交中击败了27.74%的用户法2:正则匹配执行用时:26ms,在所有Java提交中击败了11.07%的用.原创 2021-08-23 11:03:26 · 130 阅读 · 0 评论 -
Leetcode88. 合并两个有序数组
给你两个按 非递减顺序 排列的整数数组nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。来源:力扣(LeetCode)链接:htt..原创 2021-08-22 16:35:40 · 226 阅读 · 0 评论 -
Leetcode240. 搜索二维矩阵II(3种解法)
编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-a-2d-matrix 法一:暴力搜索 执行用时:13ms,在所有Java提交中击败了12.96%的用户 内存消耗:44.1MB,在所有Java提交中击败了19.69%的用户 法2:从...原创 2021-08-21 20:33:58 · 142 阅读 · 0 评论 -
Leetcode169.多数元素(4种解法)
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-element法1:取巧由于题目条件说明给定的数组总是存在多数元素,因此排序之后,打印nums[nums.length/2]位置的元素必定是多数元素执行用时:2ms,在所有Java提交中击败了62.65%...原创 2021-08-20 23:03:24 · 418 阅读 · 0 评论 -
Leetcode136.只出现一次的数字(3种解法)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions/xm0u83/来源:力扣(LeetCode)法一:如果数组长度为1,则返回第一个。如果长度大于0:判断每个元素是否既不等于前一个也不等于后一个,若是...原创 2021-08-20 11:07:22 · 183 阅读 · 0 评论 -
Leetcode485.最大连续1的个数(2种解法)
给定一个二进制数组, 计算其中最大连续 1 的个数。package 数组;public class 最大连续1的个数_485 { //法1:1次遍历(简单,主要是循环结束后还要判断一次max和sum的大小,因为当最后几位是连续1时,最后一位判断完会直接跳出循环,而不把sum赋给max) /* 执行用时:1 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:39.9 MB, 在所有 Java 提交中击败了41.95%的用户 */ .原创 2021-08-17 22:34:16 · 159 阅读 · 0 评论