数据结构与算法
码聋
东北某工科大学读书匠
展开
-
[力扣笔记]707.设计链表
值得注意的是,在涉及链表的“索引”时,我是引入一个标记flag,每次循环+1并让指针移到下一个节点。在参考了《代码随想录》后发现其实直接用while(index–)就行了,这在删除操作中由为方便(直接定位到第index个节点的前一个节点)。题目只给了几个函数,为了方便测试,我自己写了main函数的内容,完整代码如下。这道题覆盖了链表的常见操作,对理解链表相关的知识有很大的帮助。...原创 2022-07-27 22:58:51 · 259 阅读 · 0 评论 -
数据结构与算法刷题笔记——第二周:向函数传递结构体
将结构体传递给函数有以下三种方式(1)向函数传递结构体的单个成员。这种方法是传值调用,不会引起结构体成员值的变化,很少使用。(2)向函数传递结构体的完整结构。用结构体变量作为函数的实参,将整个结构体成员的内容复制给被调函数。这种方式仍然是传值调用,且占用内存空间较大。(3)向函数传递结构体的地址这是传地址调用,在函数内部对形参结构体成员值的修改将影响到实参结构体成员的值。这种方式比第二中效率更高。...原创 2021-09-29 22:00:51 · 340 阅读 · 0 评论 -
数据结构与算法刷题笔记——第一周1:双重指针一趟扫描链表
题目:输入一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:仅用一趟扫描实现。链表节点定义如下:struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}};C语言版本:struc原创 2021-09-25 10:49:48 · 188 阅读 · 0 评论 -
数据结构与算法刷题笔记——第一周3:一维数组存储二维矩阵
题目助教小卢喜欢一种NN的矩阵:它由数字 1,2,3…NN 构成,矩阵中的元素各不相同,且每行、每列及矩阵的两条对角线上的数字之和都相同。助教小卢称这种矩阵为优美矩阵,并且在N为奇数时,因为助教小卢是一个优雅的人,可以通过优雅的方式生成这一矩阵。首先将 1 写在第一行的中间。之后,按如下方式从小到大依次填写每个数 (K=2,3,⋯,N×N) :若 (K-1) 在第一行但不在最后一列,则将 K填在最后一行, (K-1)所在列的右一列;若 (K-1) 在最后一列但不在第一行,则将 K 填在第一列,原创 2021-09-25 10:36:59 · 468 阅读 · 0 评论 -
数据结构与算法刷题笔记——第一周2:异或运算
题目:给定一个长度为n的整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。要求:写出线性时间复杂度的算法。进阶:给出O(1)额外空间复杂度的算法,不考虑函数实参占用的空间。进阶算法需要用到异或运算,由于C语言一年未用,有所生疏,特此记录。C语言中按位异或符^的作用0∧0=0,0∧1=1, 1^0=1,1∧1=0,一言以蔽之,“同假异真”。实际应用在本题中,提供的数组只有一个元素没有相同元,而两个数进行按位异或^运算时(将数据转换为二进制数),相同原创 2021-09-23 23:26:06 · 139 阅读 · 0 评论