力扣leetcode
文章平均质量分 62
乐观的柏小柏
这个作者很懒,什么都没留下…
展开
-
开涮力扣:合并两个有序数组、第一个错误的版本
1.题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 输入:nums1 =原创 2022-02-19 15:13:57 · 64 阅读 · 0 评论 -
开涮力扣:5、将有序数组转换为二叉搜索树
1.题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案: 示例 2: 输入:nums = [1,3] 输出:[3,1] 解释:[1,3] 和 [3,1]原创 2022-01-23 00:04:14 · 61 阅读 · 0 评论 -
开涮力扣:4、二叉树的层序遍历--BFS
1.题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root = [1] 输出:[[1]] 示例 3: 输入:root = [] 输出:[] 2.代码 层序遍历具体步骤如下: 首先申请一个新的队列,记为queue; 将头结点head压入queue中; 每次从queue中出原创 2022-01-22 16:57:50 · 410 阅读 · 0 评论 -
开涮力扣:3.对称二叉树(C++递归)
1.题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,null,3] 输出:false 2.代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tree.原创 2022-01-22 12:06:02 · 441 阅读 · 0 评论 -
开涮力扣:2、验证二叉搜索树
1.题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入:root = [2,1,3] 输出:true 示例 2: 输入:root = [5,1,4,null,null,3,6] 输出:false 解释:根节点的值是 5 ,但是右子节点的值是 4 。 提示: 树中节点数目范围在.原创 2022-01-21 21:28:23 · 353 阅读 · 0 评论 -
开涮力扣:(含解释)1、二叉树的最大深度(BFS、DFS、递归)
树比链表稍微复杂,因为链表是线性数据结构,而树不是。 树的问题可以由 广度优先搜索 BFS或 深度优先搜索DFS 解决。 DFS 算法 思想:一直往深处走,直到找到解或者走不下去为止 使用栈保存未被检测的结点,结点按照深度优先的次序被访问并依次被压入栈中,并以相反的次序出栈进行新的检测。 BFS算法 使用队列保存未被检测的结点。结点按照宽度优先的次序被访问和进出队列。 (以上来自BFS和DFS算法原理(通俗易懂版)_尚小馨的博客-CSDN博客_bfs和dfs算法)...原创 2022-01-15 13:21:18 · 246 阅读 · 0 评论 -
开涮力扣:5.合并两个有序链表(迭代)
题目 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输出:[] 解题 思路:用迭代的方法来实现。当两个都不是空链表时,判断哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。 /...原创 2022-01-11 22:01:22 · 92 阅读 · 0 评论 -
开涮力扣:4.回文链表
4.给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1] 输出:true 示例 2: 输入:head = [1,2] 输出:false 提示: 链表中节点数目在范围[1, 10^5] 内 0 <= Node.val <= 9 进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 思路 栈实现。之前有链表反转的题...原创 2022-01-11 11:45:13 · 213 阅读 · 0 评论 -
开涮力扣:3.环形链表
3.给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 示例 1: 输入:head = [3,2,0,-4], pos =原创 2022-01-10 13:56:04 · 57 阅读 · 0 评论 -
开涮力扣:2.反转链表(C++栈)
2.给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题? 2.代码 /** * Definition for singly-linked list. * struct ListNode { ..原创 2022-01-10 12:29:56 · 316 阅读 · 0 评论 -
开涮力扣:1.删除链表中的节点
1.题目 请编写一个函数,用于删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点head,只能直接访问要被删除的节点 。 题目数据保证需要删除的节点不是末尾节点 。 示例 1: 输入:head = [4,5,1,9], node = 5 输出:[4,1,9] 解释:指定链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9 示例 2: 输入:head = [4,5,1,9], node = 1 输出:[4,5,9] 解..原创 2022-01-08 13:17:07 · 63 阅读 · 0 评论 -
开涮力扣:8.最长公共前缀--9.字符串转换整数 (atoi)
8.最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。 示例 1: 输入:strs = ["flower","flow","flight"] 输出:"fl" 示例 2: 输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。 提示: 1 <= strs.length <= 200 0 <= strs[i].length <= 200strs[i] 仅由小写英文字.原创 2022-01-07 17:55:08 · 68 阅读 · 0 评论 -
开涮力扣:7.外观数列
题目 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 第一项是数字 1 描述前一项,这...原创 2022-01-06 17:50:47 · 123 阅读 · 0 评论 -
开涮力扣:6.验证回文串
题目 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。(回文串就是正读逆读都一样的字符串) 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 解释:"amanaplanacanalpanama" 是回文串 示例 2: 输入: "race a car" 输出: false 解释:"raceacar" 不是回文串 提示: 1 <= s.leng原创 2022-01-06 11:17:27 · 65 阅读 · 0 评论 -
开涮力扣:5.有效的字母异位词
5.有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 提示: 1 <= s.length, t.length <= 5 * 104s 和 t仅包含小写字母 ..原创 2022-01-05 16:15:23 · 58 阅读 · 0 评论 -
开涮力扣:3.整数反转--4.字符串中的第一个唯一字符
3.整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围[−2^31,2^31− 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出:-321 示例 3: 输入:x = 120 输出:21 示例 4: 输入:x = 0 输出:0 代码: class Solution { pub...原创 2022-01-05 09:51:13 · 138 阅读 · 0 评论 -
开涮力扣:1.实现 strStr() 函数--2.反转字符串
1.实现strStr()函数。 给你两个字符串haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回-1 。 说明: 当needle是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当needle是空字符串时我们应当返回 0 。这与 C 语言的strstr()以及 Java 的indexOf()定义相符。 示例 1: 输入:ha...原创 2022-01-04 17:52:48 · 126 阅读 · 0 评论 -
开涮力扣:11 两数之和
为什么要把这道题作为一篇,这道题可以用暴力解法,但大多人使用map或hashmap,本篇就采用map简单实现,顺便解释下map。 题目:两数之和 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target ...原创 2021-12-31 09:50:12 · 70 阅读 · 0 评论 -
开涮力扣:8.旋转数组或旋转图像--9.有效的数独--10.数组交集
8和9是关于二维数组的题目,更多考验的是编码能力、分析解决问题能力。对于算法方面,目前没有什么更优的令人惊艳的算法。10是两个数组交集,没啥好的技巧,主要是编码能力考验。 8.旋转图像或旋转数组 (1)题目 给定一个n×n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输...原创 2021-12-29 20:21:10 · 388 阅读 · 0 评论 -
开涮力扣:6、加一 ————7、移动零
力扣简单题算法C++原创 2021-12-27 09:18:29 · 65 阅读 · 0 评论 -
开涮力扣:4.存在重复元素---5只出现一次的数字
前期题目相对简单(至少看了题目后有思路),所以将多个放在一个帖子里。 1. 存在重复元素 给定一个整数数组,判断是否存在重复元素。 如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4] 输出: false 示例 3: 输入: [1,1,1,3,3,4,3,2,4,2] 输出: true 2.代码 最直观的方法就是排序后,比原创 2021-12-25 17:57:10 · 3083 阅读 · 0 评论 -
开涮力扣:3旋转数组
1、题目 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4] 示例 2: 输入:nums = [-1,-100,3,99], k = 2 输出:[3,99,-1,-100] 解释: 向右轮转.原创 2021-12-24 11:50:47 · 118 阅读 · 0 评论 -
开涮力扣:2.买卖股票的时机
力扣:买卖股票的最佳时机 ,求上升段高度和。原创 2021-12-23 12:13:08 · 90 阅读 · 0 评论 -
开涮力扣(解释m困惑)-1.删除排序数组中的重复项
手机刷力扣(C++),解释小的关键点原创 2021-12-22 22:40:55 · 167 阅读 · 4 评论