
数据结构与算法
文章平均质量分 91
常见的数据结构与力扣算法
King~30+
大鹏一日同风起,扶摇直上九万里。
展开
-
代码随想录算法训练营第七天|LeetCode 334.反转字符串、541反转字符串II、151反转字符串中的单词
题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须、使用 O(1) 的额外空间解决这一问题。题目思路:与反转链表相同,依旧采用的是双指针的方法,只不过相对于链表,字符串的反转更为简单一点,因为字符串是数组,所以元素在内存中是连续分布的,这就决定了两者反转的差异。定义两个指针,分别指向字符串的首端和末尾端,然后交换两个指针所指的内容,然后两个指针靠近,直到两个指针的位置重叠即退出。原创 2024-09-04 11:31:07 · 1023 阅读 · 2 评论 -
代码随想录算法训练营第一天|LeetCode 704. 二分查找、 27. 移除元素、977.有序数组的平方
一、LeetCode 704. 二分查找题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。题目思路:,同时题目还强调,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大家看到题目描述满足如上条件的时候,可要想一想是不是可以用二分法了。二分查找涉及的很多的边界条件,逻辑比较简单,但就是写不好。例如到底是还是,到底是呢,还是要呢?原创 2024-09-01 17:23:25 · 1164 阅读 · 1 评论 -
代码随想录算法训练营第三天|LeetCode 203.移除链表元素、707.设计链表、206.反转链表
与传统的链表的增删改查不同的是,力扣中链表的头结点是第一个结点,这与我们之前讲述的头结点、首元结点不同,所以我们这个题主要考虑的点在于,头结点如果被删除了怎么办?思路:采用双指针的做法,关键在于将反转前的位置进行保存,如果只用一个指针,反转之后就找不到链表连接的位置。本题考察的内容,其实就是链表的增删查等操作,所以我们还是最好能构建一个虚拟头结点。3、在删除、增加等操作时,需要注意确定的位置应该是index前面的一个位置;4、在查找的时候,确定的位置应该是index的位置。题目描述:给你一个链表的头节点。原创 2024-09-01 10:23:12 · 1037 阅读 · 1 评论 -
代码随想录算法训练营第四天|LeetCode 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07链表相交、142.环形链表II
可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。当然,还是需要构建虚拟头节点,采用双指针,让一个先走N,然后两个同时再将剩下的走完,就确定了N-1的位置。1、获取两个链表的差值,设置两个指针,让长链表的指针先走差值,然后两个指针一起走,看看会不会相遇。,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。原创 2024-08-31 21:17:52 · 1117 阅读 · 0 评论 -
数据结构——栈和队列(C语言实现)
栈和队列是两种重要的线性结构,本次主要对其顺序栈,链栈,顺序队列,链队进行学习,并用C语言对其进行实现。原创 2024-07-17 21:23:14 · 1514 阅读 · 0 评论 -
数据结构——线性表(C语言实现)
数据结构线性表的内容:顺序表+链表,增删查改,C语言实现,含有运行结果!!!动态顺序变、单链表、双链表,循环链表;原创 2024-07-12 10:45:29 · 2453 阅读 · 0 评论 -
数据结构---(时间、空间复杂度)讲解
让大家认识到算法时间复杂度与空间复杂度的相关概念,并且学会对于一些简单的算法能够判断其空间复杂度与时间复杂度的大小,原创 2023-09-09 20:14:41 · 150 阅读 · 0 评论