小赵的算法学习指南
文章平均质量分 70
本专栏按照数组—链表—哈希—字符串—栈与队列—二叉树—回溯—贪心—动态规划—单调栈的顺序刷题,采用代码随想录所给的刷题顺序,一个正确的刷题顺序对算法学习是非常重要的,希望对大家有帮助
向着百万年薪努力的小赵
当注意力专注于一件事上,岁月就会显得十分轻浮,快的有些过于浪荡——远近书疏,莫不手答,笔翰如流,未尝壅滞
展开
-
2022-08-10北京华为OD机试真题分享——满分
在家照顾即将生产的媳妇以及全职学习已经有一段时间了,每天除了技术学习以外算法也不能落下,但是理论学的再多也不如实践一次,于是乎,决定参加一下面试检验下学习成果,Boss放开简历,立刻就有几个华为OD的来约,遂参加机试,分享题目如下:.........原创 2022-08-10 12:30:30 · 62279 阅读 · 9 评论 -
力扣(同构字符串解析)——学习到HashMap的put方法返回值
如图,该题的本质其实就是寻找相同字符的位置是否一样遍历这个字符串的每个字符,并将其下标位置存入map中,如果字符重复,则将下标位置进行替换同时比较每个字符的位置,如果重复字符的位置不一样,则映射关系不成立HashMap的put方法返回值put方法返回值为null或者value;如果key没有重复,put成功,则返回null如果key重复了,返回的是map.get(key),也就是当前这个key对应的value,同时覆盖掉当前value......原创 2021-08-05 17:35:19 · 314 阅读 · 0 评论 -
力扣题(2的幂)——学习到JAVA按位与“&”在“n&(n-1)”中的使用
如上图,求一个数是不是2的幂,一行代码解决。那么,(n & (n-1)) == 0是什么意思呢java中“&”表示按位与操作,他把左右变为二进制然后按位取与。“n=n&(n-1)”的意思就是去掉“n的二进制”的最后一个1.如果A&B==0,表示A与B的二进制形式没有在同一个位置都为1的时候。这句话到底啥意思??不妨先看下n-1是什么意思。令:n=1101011000(二进制,十进制也一样),则n-1=1101010111。n&(n-1)=1101.原创 2021-08-06 16:09:18 · 198 阅读 · 0 评论 -
268. 丢失的数字--java-异或运算
丢失的数字给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?示例 1: 输入:nums = [3,0,1] 输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2是丢失的数字,因为它没有出现在 nums 中。示例 2: 输入:nums = [0,1] 输出:2解释:n = 2,因为有 2个数字,所以所有的数字都在.原创 2021-08-13 17:53:06 · 467 阅读 · 0 评论 -
数组——704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。原创 2022-07-23 16:06:56 · 206 阅读 · 0 评论 -
数组——27. 移除元素
给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。......原创 2022-07-23 16:11:11 · 108 阅读 · 0 评论 -
数组——977. 有序数组的平方
给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。原创 2022-07-23 16:13:43 · 112 阅读 · 0 评论 -
数组——209.长度最小的子数组
找出该数组中满足其和≥target的长度最小的连续子数组[numsl,numsl+1,…,numsr-1,numsr],并返回其长度。如果不存在符合条件的子数组,返回0。原创 2022-07-23 16:38:40 · 108 阅读 · 0 评论 -
数组——59. 螺旋矩阵 II
给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的nxn正方形矩阵matrix。原创 2022-07-23 16:41:43 · 135 阅读 · 0 评论 -
数组——11. 盛最多水的容器
找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明你不能倾斜容器。原创 2022-07-23 16:54:40 · 130 阅读 · 0 评论 -
链表——203. 移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。原创 2022-07-23 16:59:27 · 134 阅读 · 0 评论 -
链表——707. 设计链表
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。......原创 2022-07-23 23:24:43 · 133 阅读 · 0 评论 -
链表——206. 反转链表(这题很重要)
给你单链表的头节点head,请你反转链表,并返回反转后的链表。原创 2022-07-23 23:34:00 · 257 阅读 · 0 评论 -
链表——24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2022-07-24 08:46:49 · 2073 阅读 · 0 评论 -
链表——19. 删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。原创 2022-07-24 08:52:47 · 215 阅读 · 0 评论 -
链表——剑指offer面试题 02.07. 链表相交
面试题02.07.链表相交给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。...原创 2022-07-24 09:01:36 · 175 阅读 · 0 评论 -
链表——142. 环形链表 II
给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。注意pos不作为参数进行传递,仅仅是为了标识链表的实际情况。。...原创 2022-07-24 09:07:25 · 140 阅读 · 0 评论 -
哈希——242.有效的字母异位词
注意若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。原创 2022-07-24 09:38:58 · 129 阅读 · 0 评论 -
哈希——349. 两个数组的交集
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。原创 2022-07-24 09:50:14 · 235 阅读 · 0 评论 -
哈希——202. 快乐数
快乐数」定义为对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1,也可能是无限循环但始终变不到1。如果这个过程结果为1,那么这个数就是快乐数。如果n是快乐数就返回true;不是,则返回false。...原创 2022-07-24 09:54:45 · 143 阅读 · 0 评论 -
哈希——1. 两数之和——有人白天相爱,有人夜里看海,有人力扣第一题都做不出来
有人白天相爱,有人夜里看海,有人力扣第一题都做不出来原创 2022-07-24 09:59:32 · 224 阅读 · 0 评论 -
哈希——15. 三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。原创 2022-07-24 10:03:54 · 265 阅读 · 0 评论 -
哈希——18. 四数之和
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组[nums[a],nums[b],nums[c],nums[d]](若两个四元组元素一一对应,则认为两个四元组重复)a、b、c和d互不相同你可以按任意顺序返回答案。...原创 2022-07-24 10:11:23 · 150 阅读 · 0 评论 -
字符串——344.反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。原创 2022-07-24 10:28:10 · 220 阅读 · 0 评论 -
字符串——541. 反转字符串 II
如果剩余字符少于k个,则将剩余字符全部反转。如果剩余字符小于2k但大于或等于k个,则反转前k个字符,其余字符保持原样。原创 2022-07-24 10:33:24 · 197 阅读 · 0 评论 -
字符串——剑指 Offer 05. 替换空格
剑指Offer05.替换空格请实现一个函数,把字符串s中的每个空格替换成"%20"。原创 2022-07-24 10:40:20 · 137 阅读 · 0 评论 -
字符串——剑指 Offer 58 - II. 左旋转字符串
剑指Offer58-II.左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。...原创 2022-07-24 11:27:45 · 127 阅读 · 0 评论 -
字符串——28. 实现 strStr()
给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串出现的第一个位置(下标从0开始)。如果不存在,则返回-1。说明当needle是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当needle是空字符串时我们应当返回0。这与C语言的strstr()以及Java的indexOf()定义相符。...原创 2022-07-24 11:32:18 · 187 阅读 · 0 评论 -
字符串——459. 重复的子字符串
给定一个非空的字符串s,检查是否可以通过由它的一个子串重复多次构成。原创 2022-07-24 11:38:45 · 282 阅读 · 0 评论 -
栈与队列——232. 用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)实现MyQueue类voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanempty()如果队列为空,返回true;否则,返回false说明。...原创 2022-07-24 12:14:21 · 156 阅读 · 0 评论 -
栈与队列——225. 用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop和empty)。原创 2022-07-24 12:18:50 · 89 阅读 · 0 评论 -
栈与队列——20. 有效的括号
给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’的字符串s,判断字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。原创 2022-07-24 12:23:03 · 128 阅读 · 0 评论 -
栈与队列——1047. 删除字符串中的所有相邻重复项
给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。...原创 2022-07-24 14:12:48 · 180 阅读 · 0 评论 -
栈与队列——150. 逆波兰表达式求值
根据逆波兰表示法,求表达式的值。有效的算符包括+、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。注意两个整数之间的除法只保留整数部分。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为0的情况。来源力扣(LeetCode)链接https著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。......原创 2022-07-25 18:50:44 · 144 阅读 · 1 评论 -
栈与队列——239. 滑动窗口最大值
给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。原创 2022-07-25 18:51:16 · 141 阅读 · 0 评论 -
栈与队列——347. 前 K 个高频元素
给你一个整数数组nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。原创 2022-07-25 19:04:33 · 176 阅读 · 0 评论 -
二叉树——226. 翻转二叉树
给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。原创 2022-07-25 19:08:59 · 1754 阅读 · 0 评论 -
二叉树——101. 对称二叉树
给你一个二叉树的根节点root,检查它是否轴对称。原创 2022-07-25 19:15:14 · 232 阅读 · 0 评论 -
二叉树——104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明叶子节点是指没有子节点的节点。原创 2022-07-25 19:23:32 · 131 阅读 · 0 评论 -
二叉树——111. 二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明叶子节点是指没有子节点的节点。原创 2022-07-25 19:27:48 · 152 阅读 · 0 评论