leetcode
leetcode题目记录
喜欢吃冰棍de谷利文君
日拱一卒,功不唐捐
展开
-
回溯法(一)
之前做过回溯法相关的题,但今天碰到了一个字符串的排列,有印象可以使用回溯法,但是好久不写,竟有些生疏了。还是基础不牢,这会子地动山摇,愣是解不出来。因此,整理记录一下,加深印象。回溯法,我的理解就是遍历解空间,有点DFS的味道,走不通就退回去选其他路。是不是像在走迷宫?由于采用回溯法求解时,需要回退到父亲节点,所以需要保存搜索过的节点。通常有两种,1)采用栈来保存;2)采用递归方法。用回溯法通常采用两种策略避免无效搜索,即,剪枝函数1)用约束函数在扩展节点处剪除不满足约束条件的路径;2)用原创 2020-06-13 17:35:34 · 597 阅读 · 0 评论 -
【面试题32-lll】 从上到下打印二叉树 III
题目描述:(来源于力扣 剑指offer32)这道题和前面的两题比较类似,1)层序遍历2)分行从上到下打印二叉树这道题,3)之字形打印二叉树需要考虑3点:层序遍历二叉树分层打印之字形(奇数层和偶数层顺序不同)层序遍历二叉树可以考虑使用队列存储节点的值;分层打印可以考虑计算队列中元素的个数来换行;之字形打印,奇数层正序,偶数层逆序,通过层数的奇偶性来判断。下面使用两种方式来实现:层序遍历+双栈 or 层序遍历+队列+deque。1)层序遍历+双栈如果只是层序遍历二叉树,那么使原创 2020-06-07 10:45:42 · 284 阅读 · 0 评论 -
【算法79】 单词搜索
题目描述:(来源于力扣79) 思路:查找的过程如下图所示,依次比较矩阵中的元素和字符串中的元素,如果存在不同的元素,就返回上一个节点,旋转一个方向角,重新匹配。//旋转方向,顺时针int direction[4][2]={{0,-1},{1,0},{0,1},{-1,0}};上面的查找过程类似于一棵树的遍历,具体实现://回溯法// 时间复杂度: O(m*n*m*n)/...原创 2020-03-31 11:26:16 · 129 阅读 · 0 评论 -
【算法92】 反转链表ll
题目描述:(来源力扣92)反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:先说一下,这道题自己做的过程,在这道题之前做了类似的反转链表(力扣206),那道题是反转整个链表,比较简单。这里就只贴出代码了:力扣206:反转链表class Solution {public: ListNode* reverseList(Li...原创 2020-03-20 12:47:44 · 90 阅读 · 0 评论 -
【算法447】 回旋镖的数量
题目描述:(来源于力扣447)给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。示例:题目中的表述有点绕,其实就是两边节点到中间节点的距离相等。这里的n最多为...原创 2020-03-19 14:29:12 · 246 阅读 · 0 评论 -
【算法1】 两数之和
题目描述:(来源于乐扣1)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:1 暴力解法这道题和乐扣167题( 两数之和 II - 输入有序数组)类似,区别仅在于这道题的数组不是有序的。暴力解法依然是双层遍历,然后比对计算两者...原创 2020-03-19 10:50:17 · 139 阅读 · 0 评论 -
【算法209】 长度最小的子数组
题目描述:(来源于力扣209)理解:1)什么叫子数组,是否需要连续?2)如果没有解怎么办?返回0?3)如果有多个解怎么办?返回所有解,解的顺序怎么样?1 暴力解法使用两层遍历,只有在和满足条件时,才会更新长度length。class Solution {public: int minSubArrayLen(int s, vector<int>& nu...原创 2020-03-18 18:41:05 · 103 阅读 · 0 评论 -
【算法125】 验证回文串
题目描述:(来源于leetcode125)给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。思路:1)空字符串如何看?2)字符的定义?3)大小写问题判断回文字符串,我们可以使用双指针碰撞法分别指向字符串第一个字符和最后一个字符。如果满足回文字符串的定义,就将首指针加一,尾指针减一。我的实现:c...原创 2020-03-18 14:51:39 · 124 阅读 · 0 评论 -
【算法167】 两数之和 II - 输入有序数组
题目描述:(来源leetcode167)给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:1 暴力解法——双层...原创 2020-03-18 11:01:00 · 119 阅读 · 0 评论 -
【算法111】 二叉树的最小深度
题目描述:(来源于力扣111)给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最小深度 2.解法:1)深度优先搜索法首先分别计算左右子数的深度,然后分情况判断:若左子树为空,返回右子树深度;若右子树为空,返回左子树深度...原创 2020-03-10 15:39:36 · 231 阅读 · 0 评论 -
【算法589】 N叉树的前序遍历
题目描述:(来源于力扣589)给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :返回其前序遍历: [1,3,5,6,2,4]。解法:1)递归实现递归实现比较简单。class Solution {public: vector<int> ret;//存储返回值 vector<int> preorder(Node* root...原创 2020-03-09 19:25:48 · 169 阅读 · 0 评论 -
【面试题 04.04】 检查平衡性
题目描述:(来源于力扣)实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。解题思路1)递归求解每个节点的高度,关键在于父节点和子节点的高度值之间的关系;2)计算平衡因子;3)计算平衡性,使用递归求解每一个节点的平衡因子;如果缺少最后的递归左右子树,就会导致只计算了根节点的平衡因子,其他节点的平衡因子都没有计算。代码/...原创 2020-03-08 13:24:42 · 232 阅读 · 0 评论 -
【算法107】 二叉树的层次遍历II
题目描述:(来源于力扣107)给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为:解法:1)使用队列,将每一次遍历的节点排入队列中;2)关键在于,不同层节点的划分;这里获取了队列的长度,正好等于这一层的节点数。/** * Def...原创 2020-03-07 14:11:38 · 143 阅读 · 0 评论 -
【算法57】 和为s的连续正数序列
题目分析:1)连续正整数序列;2)至少两个,也就是说并不包含自身;3)序列内数字需要有序排列,使用队列存储。原创 2020-03-06 09:26:57 · 115 阅读 · 0 评论 -
【算法26】 删除排序数组中的重复项
题目描述:(来源:力扣算法26)代码:自己思考时,若当前元素值大于等于下一个位置的元素值,则用后面的元素值覆盖当前元素值。提交时出错在只有一个元素的情况,预感是边界情况考虑有问题。这里贴出来,等下次再想想。在这里插入代码片主要思路:双指针法class Solution {public: int removeDuplicates(vector<int> &...原创 2020-03-04 19:59:50 · 122 阅读 · 0 评论 -
【数据库178】 分数排名
题目描述:(来源:力扣数据库178)编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):我的解法:SELECT s3.Score, s4.rank FROM Scor...原创 2020-03-03 15:21:17 · 527 阅读 · 0 评论 -
【数据库602】 换座位
题目描述:(来源:力扣数据库602)小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的小美想改变相邻俩学生的座位。你能不能帮她写一个 SQL query 来输出小美想要的结果呢?结果:注意:如果学生人数是奇数,则不需要改变最后一个同学的座位。我的解法:select s1.id,s1.s...原创 2020-03-02 15:48:42 · 448 阅读 · 0 评论