随笔分类 - leetcode
Leecode 思路及代码实现
摘要:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1: cl
阅读全文
摘要:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用 '.' 表示。 思路:直接循环遍历应该就可以,用三个二维矩阵记录数字是否出现,如果数字重复出现,则会发现记录为true,此时返回fasle;
阅读全文
摘要:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 思路:二分,注意一下最后循环结束时,游标r的位置,不清楚可以加一个判断语句,如果num是【r】大于等于target那么是r,否则就是r+1的位置 c
阅读全文
摘要:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三
阅读全文
摘要:题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度
阅读全文
摘要:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,
阅读全文
摘要:实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 示例 2: 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这
阅读全文
摘要:思路:水题,用一个res变量记录当前出现不同元素个数,然后直接在res位置,改写nums,遍历一次数组就可以完成。
阅读全文
摘要:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 思路:1;递归;直接翻转就好了,代码简洁明了,但是链表过长可能会导致堆栈溢出。 2;如果要采用迭代,则额外需要两个指针和一个头结点来进行循环迭代,
阅读全文
摘要:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ]思路:深度优先搜索,加递归实现,如果有左括号存在,那么将左括号加入
阅读全文
摘要:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 思路1:仿照两数之和,不需要排序,但是会返回重复复的三元组,因此要去重,用标准库unique函数出
阅读全文