
LeetCode
文章平均质量分 51
郭同学如是说
在这里亟需一个宏大的的沉思。
展开
-
【大厂HOT100题】二叉树的锯齿形层序遍历
原题链接:二叉树的锯齿形层序遍历和二叉树的层序遍历不能说很像,只能说一模一样题意给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层序遍历如下:[ [3], [20原创 2022-01-08 14:42:03 · 106 阅读 · 0 评论 -
【大厂HOT100题】有效的括号
原题链接:题意给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true思路使用栈维护一个集合使用for循环对字符串进行遍历,将遍历到的字符与栈顶元素进行比较,如果匹配,那么就让栈顶元素出栈最终,如果栈为空,那么为TRUE,否则为FALSE代码class Solution {public: b原创 2022-01-07 11:25:49 · 192 阅读 · 0 评论 -
【大厂HOT100题】二叉树的层序遍历
原题链接:二叉树的层序遍历题意给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]思路:广度优先搜索代码...原创 2022-01-06 22:44:19 · 94 阅读 · 0 评论 -
【大厂HOT100题】合并两个有序数组
原题链接: 合并两个有序数组题意给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:原创 2022-01-05 21:48:09 · 94 阅读 · 0 评论 -
【大厂HOT100题】相交链表
原题链接:相交链表题意给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:思路倘若两个链表有交点,那么满足以上示意图a为链表1到达交点的步数c为链表2到达交点的步数b为交点到达终点的步数令链表1每次走一步,到达终点时(此时走了a+b),从链表2的头结点起步令链表2每次走一步,到达终点时(此时走了b+c),从链表1的头结点起步那么,他们到达结点的时候,都走了原创 2022-01-05 16:11:51 · 277 阅读 · 0 评论 -
【大厂HOT100题】买卖股票的时机
原题链接题目要求假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。思路:动态规划暴力做法:使用 i 和 j 分别指向数组中两个值,取其差即可,复杂度O(n2)O(n^2)O(n2)动态规划做法:遍历数组原创 2022-01-05 15:44:36 · 192 阅读 · 0 评论 -
【大厂HOT100题】环形链表
原题链接:环形链表题意给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。思原创 2022-01-04 22:13:52 · 96 阅读 · 0 评论 -
【大厂HOT100题】合并两个有序链表
原题连接:合并两个有序链表题意将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路创建一个头结点i,j分别指向两个链表挑选出值较小的结点,更改指针指向,从而完成合并如下图所示,红色为最终的指针指向,灰色为被删除的指针代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *原创 2022-01-03 21:57:58 · 116 阅读 · 0 评论 -
【大厂HOT100题】两数之和
原题连接:两数之和题意给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。思路使用unordered_map <int,int>构成键值的映射,key为数组中某个元素的值,value为对应的下标找到a+b=target,也就是说在枚举到a的时候,查找有没有target-b存在即可,因此只需要一个for循环unordered_map <int,int>,内部实现了一个哈希表,原创 2022-01-02 00:21:37 · 96 阅读 · 0 评论 -
【大厂HOT100题】最大子数组和
原题连接:数组中的第K个最大元素题意给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。思路:动态规划首先对数组进行遍历,当前最大连续子序列和为 temp,最终结果为 ans如果 temp>0temp>0temp>0 ,则说明原创 2022-01-01 23:39:49 · 160 阅读 · 0 评论 -
【大厂HOT100题】LRU 缓存
原题链接:LRU缓存题意LRU算法简介:LRU 全称:Least Recently Used,最近最少使用LRU是一种常用的页面置换算法,选择最近最少使用的页面予以淘汰题目要求完成以下函数功能:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已原创 2021-12-27 00:04:01 · 347 阅读 · 0 评论 -
【大厂HOT100题】反转链表 Reverse Linked List
原题连接:反转链表题意:给你单链表的头节点 head ,反转链表,并返回反转后的链表思路首先特判,如果head为空指针或者head->next为NULL则直接返回head使用两个指针,分别指向第一个结点la和第二个结点lb,让第二个结点的next结点指向第一个结点使用while循环持续该操作,直到遍历到最后一个结点。为了完成这个操作,需要一个temp指针变量临时存储lb->next最终,将head指向null,返回la即可/** * Definition for si原创 2021-12-23 22:41:11 · 342 阅读 · 0 评论 -
LeetCode 300. 最长上升子序列 【动态规划】
【LeetCode 300. 最长递增子序列】题目要求给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示原创 2021-05-07 00:03:06 · 219 阅读 · 0 评论 -
LeetCode 1. 两数之和
原题链接题目要求给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target =原创 2021-04-29 11:59:48 · 64 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
原题链接题目要求在一个 n * m 的二维数组中,**每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。**请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,原创 2021-04-27 19:11:02 · 75 阅读 · 0 评论 -
剑指 Offer 63. 股票的最大利润
原题链接题目要求假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。思路遍历数组,记录当原创 2021-04-26 23:04:22 · 101 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数
原题链接题目要求请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:00000000000000000000000010000000输出:1解释:输入原创 2021-04-26 17:10:05 · 74 阅读 · 0 评论 -
剑指 Offer 67. 把字符串转换成整数
原题链接原题链接题目要求写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。注原创 2021-04-26 15:30:32 · 113 阅读 · 0 评论 -
删除排序链表中的重复元素 II——LeetCode82
原题链接原题链接.思路增加哑结点由于链表的头节点可能会被删除,因此额外创建一个哑节点指向链表的头节点,这样方便处理边界问题比如在输入为[1,1,1]的时候,所有节点都会被删除初始化创建哑结点p指针指向哑结点初始化后的链表:以[1,1,3]为例while循环这个while循环可以自己画个图模拟一下当p指向的next节点不为NULL时:q指向p的下一个节点(即:q=p->next)当q不为NULL且q节点的值与p的下一个节点的值相等时(即:while(q&原创 2021-03-26 18:45:35 · 111 阅读 · 0 评论