![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣刷题
文章平均质量分 58
小羊没烦恼~
带着偏见看世界!
展开
-
力扣算法-Day22
想一下,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。原创 2024-01-29 20:00:00 · 368 阅读 · 0 评论 -
力扣算法-Day21
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。很多数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。双指针:right指向新长度的末尾,left指向旧长度的末尾。好处:不用申请新数组。原创 2024-01-28 20:00:00 · 447 阅读 · 0 评论 -
力扣算法-Day20
这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。,从字符串开头算起,每计数至。原创 2024-01-27 20:00:00 · 595 阅读 · 0 评论 -
力扣算法-Day19
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。思路:因为必须原地修改数组,所以不能使用额外的空间。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。双指针:循环的条件(右边的大于左边的)原创 2024-01-26 21:24:45 · 353 阅读 · 0 评论 -
力扣算法-Day18
三数之和 可以通过 nums[i] > 0 就返回了,因为 0 已经是确定的数了,四数之和这道题目 target是任意值。四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n^2),四数之和的时间复杂度是O(n^3)。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。原创 2024-01-25 22:18:53 · 259 阅读 · 0 评论 -
力扣算法-Day17
接下来如何移动left 和right呢, 如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组是排序后了,所以right下标就应该向左移动,这样才能让三数之和小一些。如下图:拿这个nums数组来举例,首先将数组排序,然后有一层for循环,i从下标0的地方开始,同时定一个下标left 定义在i+1的位置上,定义下标right 在数组结尾的位置上。整体寻找三数之和的代码比较容易的,最重要的还是去重的操作。双指针:首先要将nums数组进行排序。原创 2024-01-23 22:51:40 · 1009 阅读 · 0 评论 -
力扣算法-Day16
哈希表:C语言用哈希表去解决一些问题太麻烦了。只能自己动手先实现想要的数据类型。与“有效的字母异位词”很像,做法是相同的。不太理解的还请去看前几篇。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。暴力循环: 最直接也是最容易想到的。直接四层for循环。,请你计算有多少个元组。原创 2023-12-30 23:14:52 · 378 阅读 · 0 评论 -
力扣算法-Day15
因为不仅要使用对应的数值,还需要使用下标(最后需要返回)。在哈希表中插入和查找的时间复杂度通常是 O(1),因此整体的时间复杂度为 O(n)。C 语言本身没有提供内置的哈希表数据结构的,需要自己动手实现。我们遍历到数字 a 时,用 target 减去 a,就会得到 b,若 b 存在于哈希表中,我们就可以直接返回结果了。若 b 不存在,那么我们需要将 a 存入哈希表,好让后续遍历的数字使用。时间复杂度为O(n^2),这样的代价无疑是很大的。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。原创 2023-12-29 23:20:19 · 400 阅读 · 1 评论 -
利用C语言实现set——手搓set
在 C 语言中,可以使用数组来手动实现 Set(集合)的功能。具体来说,以下是一种简单的在 C 语言中手动实现 Set 的方法:一、定义数组来存储set元素首先,定义一个数组来存储 Set 的元素。数组中的每个元素代表一个 Set 中的值。假设我们设置一个最大容量为MAX_SIZE的 Set,可以声明一个数组来存储元素:原创 2023-12-28 22:59:28 · 733 阅读 · 0 评论 -
力扣算法-Day14
初始化:慢指针、快指针都为 n。如果遇到无限循环的数字,这两个指针一定会相遇。这个时候,相遇的时候快慢指针如果指到的数字为1。这个时候循环结束,返回 true(这个时候慢指针走完一轮、快指针一直为1)。否则返回 false。递归:终止条件——n = 1的时候返回true,n = 4 的时候返回false。10以内的数字只有4是不断的循环的。这里所说的向前走一步是 “对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和”这个意思。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。原创 2023-12-28 22:47:37 · 620 阅读 · 0 评论 -
力扣算法-Day13
那时间复杂度O(m*n)。显而易见的,都会想到用两个循环去寻找寻找公共集合。如果m、n比较大的话,效率是比较慢的。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。输出结果中的每个元素一定是。哈希表能解决什么问题呢,原创 2023-12-27 23:41:51 · 350 阅读 · 0 评论 -
力扣算法-Day12
排序:t 是 s的异位词等价于「两个字符串排序后相等」。因此我们可以对字符串 s 和 t分别排序,看排序后的字符串是否相等即可判断。此外,如果 s和 t 的长度不同,t 必然不是 s的异位词。而且这道题目中字符串只有小写字符,那么就可以定义一个大小为26的数组,来记录字符串s、t里字符出现的次数。s中字符出现一次,对应的索引++;t中字符出现一次,对应的索引--;给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。原创 2023-12-26 23:30:40 · 395 阅读 · 0 评论 -
链表总结篇
链表的理论基础链表的种类主要为:单链表,双链表,循环链表链表的存储方式:链表的节点在内存中是分散存储的,通过指针连在一起。链表是如何进行增删改查的。数组和链表在不同场景下的性能分析。链表经典题目虚拟头结点链表的一大问题就是操作当前节点必须要找前一个节点才能操作。这就造成了,头结点的尴尬,因为头结点没有前一个节点了。每次对应头结点的情况都要单独处理,所以使用虚拟头结点的技巧,就可以解决这个问题。链表的基本操作力扣707.设计链表这是练习链表基础操作的非常好的一道题目,考察了:获原创 2023-12-25 23:52:13 · 347 阅读 · 0 评论 -
力扣算法-Day11
题意: 给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。:不允许修改给定的链表。返回索引为 1 的链表节点链表中有一个环,其尾部连接到第二个节点。返回 null链表中没有环。原创 2023-12-24 21:49:26 · 341 阅读 · 0 评论 -
力扣算法-Day10
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3输出:Intersected at '8'解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表原创 2023-12-23 23:42:36 · 958 阅读 · 0 评论 -
力扣算法-Day9
如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。首先找到链表的长度、再去寻找倒数第n个节点去删除。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。进阶:你能尝试使用一趟扫描实现吗?原创 2023-12-22 23:59:52 · 351 阅读 · 0 评论 -
力扣算法-Day8
时间复杂度:O(n)空间复杂度:O(1)如果只是把节点中的值翻转一下就很简单,就可以简单交换一下值。这个题目需要我们反转一下节点。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。追光的人,终会光芒万丈!!原创 2023-12-21 00:00:07 · 391 阅读 · 0 评论 -
力扣算法-Day7
好了,今天就到这里!如果你可以动动手指画个图就会非常容易的理解这道题目!这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。追光的人,终会光芒万丈!!原创 2023-12-19 22:07:44 · 419 阅读 · 0 评论 -
力扣算法Day-6
如果使用不带头链表的话,无论是插入元素还是删除元素都要讨论,并且里面还有一个很大的抗,比如修改头结点的时候,需要得到指针的地址的地址MyLinkedList**,这样才能修改,如果没有注意的话,提交是通不过的。因为别名MyLinkedList是在结构体定义结束后才可以识别的一个别名;这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。如果在这个struct定义里面,直接把next指针定义为。所以在结构体里面,是不认识这个别名的。都是一些基本的操作。原创 2023-12-18 23:57:53 · 331 阅读 · 0 评论 -
力扣算法Day-5
示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]或者把malloc一个新的节点,设置为头节点。这样的话就不需要分情况操作了。示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]示例 2: 输入:head = [], val = 1 输出:[]这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。如果头节点需要删除的话,需要单独写一部分删除头结点的代码逻辑。,请你删除链表中所有满足。给你一个链表的头节点。原创 2023-12-17 22:28:22 · 344 阅读 · 1 评论 -
数组总结篇-Day4
从⼆分法到双指针,从滑动窗⼝到螺旋矩阵。一步一个脚印,真的好好用心做一定有所收获的。今天有点水。下期主要就是链表的题目了,一起加油。共勉!!原创 2023-12-16 23:02:46 · 438 阅读 · 1 评论 -
力扣算法-Day3
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。这个是我没有想到的,居然真的有人纯暴力解出来了。因为题目说了n的范围。这一期专栏记录将我每天的刷题,希望各位的监督,也希望和各位共勉。这道题目不涉及什么算法,纯纯模拟过程。主要要掌握各种边界问题。由外向内一圈一圈这么画下去。原创 2023-12-15 22:35:46 · 399 阅读 · 0 评论 -
力扣算法-Day2
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]思路:1.暴力解决:把全部的元素先进行平方,最后排序(冒泡...)原创 2023-12-14 22:26:58 · 384 阅读 · 1 评论 -
力扣算法-Day1
示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。代码实现:(双指针)原创 2023-12-13 23:44:35 · 379 阅读 · 1 评论