
算法训练(二)
文章平均质量分 62
leetcode算法训练
千Q
这个作者很懒,什么都没留下…
展开
-
代码随想录算法训练营第十一天|150.逆波兰表达式求值、239.划定窗口最大值、347.前K个高频元素
采用map的key和value的方式,key记录数组值,value记录元素出现的次数。给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。输入: nums = [1,1,1,2,2,3], k = 2。返回一个表示表达式值的整数。原创 2024-07-22 14:59:31 · 358 阅读 · 0 评论 -
代码随想录算法训练营第十天|232.用栈实现队列、225.用队列实现栈、20.有效的括号
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。boolean empty() 如果栈是空的,返回 true;遇到左括号将对应的有括号加到栈中,遇到有括号时匹配。void push(int x) 将元素 x 推到队列的末尾。int pop() 从队列的开头移除并返回元素。int peek() 返回队列开头的元素。原创 2024-07-21 16:01:05 · 464 阅读 · 0 评论 -
代码随想录算法训练营第九天|151.翻转字符串里的单词、55.右旋转字符串、28.实现strStr()、459.重复的子字符串
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。:判断字符串s是否由重复子串组成,只要两个s拼接在一起,里面还出现一个s的话,就说明是由重复子串组成。第二行为字符串 s,代表需要旋转的字符串。原创 2024-07-21 15:24:36 · 386 阅读 · 0 评论 -
代码随想录算法训练营第八天|344.反转字符串、541.反转字符串||、54.替换数字
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。:重新理解题目,每隔2K个反转前K个,尾数不够K个的时候全部反转。原创 2024-07-15 11:59:30 · 324 阅读 · 1 评论 -
代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、02.07.链表相交、142.环形链表||
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2。解释:链表中有一个环,其尾部连接到第二个节点。原创 2024-07-15 11:58:52 · 395 阅读 · 0 评论 -
代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、02.07.链表相交、142.环形链表||
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2。解释:链表中有一个环,其尾部连接到第二个节点。原创 2024-07-14 16:30:34 · 344 阅读 · 0 评论 -
代码随想录算法训练营第七天|454.四数相加||、383.赎金信、15.三数之和、18.四数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]输入:nums = [1,0,-1,0,-2,2], target = 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输出:[[-1,-1,2],[-1,0,1]]原创 2024-07-14 14:07:01 · 476 阅读 · 0 评论 -
代码随想录算法训练营第六天|哈希表理论基础、242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。:因为只包含小写字母,所以确定了数组的大小,那么根据数组下标对应的值来判断两个字符串出现字符的次数是否相等即可。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。原创 2024-07-14 10:41:12 · 290 阅读 · 0 评论 -
代码随想录算法训练营第三天|703.移除链表元素,707.设计链表,206.反转链表
将要移除的元素的前一个节点的next指向目标节点的next。就是连接跳过这个节点,将前一个节点直接连在后一个节点上。以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。,请你反转链表,并返回反转后的链表。是指向下一个节点的指针/引用。,删除和添加节点要进行下标检验。如果是双向链表,则还需要属性。,请你删除链表中所有满足。:定义链表节点,初始化链表。给你一个链表的头节点。703.移除链表元素。原创 2024-07-14 09:48:06 · 330 阅读 · 0 评论 -
代码随想录算法训练营第二天|977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵||
因为数组是非递减的,且包含负数,那么平方之后最大的数就是原数组两边的数。将两者相加判断两边的绝对值谁最大,最后从结果数组的最右边开始填入结果。:滑动窗口,当sum等于目标值时开始移动窗口。需要注意的是,res要放入while循环中,否则会漏掉一部分答案。,并返回其长度**。**如果不存在符合条件的子数组,返回。首先确定循环圈数为n/2,然后确定边界开始模拟。所有元素,且元素按顺时针顺序螺旋排列的。个正整数的数组和一个正整数。组成的新数组,要求也按。209.长度最小的子数组。977.有序数组的平方。原创 2024-07-09 16:13:43 · 389 阅读 · 0 评论 -
代码随想录算法训练营第一天|704. 二分查找,27. 移除元素,35.搜索插入位置,34.在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。如果数组中不存在目标值 target,返回 [-1, -1]。二分的时候,只找左边界,也就是即使找到了右边界也接着二分。:移除元素,那就将不等于目标值的元素重新赋值给数组。34.在排序数组中查找元素的第一个和最后一个位置。,如果目标值存在返回下标,否则返回。原创 2024-07-09 15:25:42 · 320 阅读 · 0 评论