随笔分类 -  数据结构与算法

摘要:1.题目介绍 1.1 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs = ["flower","flow","flight"] 输出:"fl" 示例 2: 输入:strs = ["dog","racecar","car" 阅读全文
posted @ 2023-10-14 21:41 DawnTraveler 阅读(128) 评论(0) 推荐(0)
摘要:键值对在内存中的存储方式取决于具体的数据结构和编程语言。通常,有两种主要的数据结构用于存储键值对:数组(或列表)和哈希表。以下是它们的工作原理: 1.数组(或列表)存储键值对: 如果键值对存储在数组中,通常有两数组,一个用于存储键(通常是整数或字符串),另一个用于存储值(可以是任何数据类型)。 数组 阅读全文
posted @ 2023-10-14 16:04 DawnTraveler 阅读(161) 评论(0) 推荐(0)
摘要:1.问题 在定义结构体时,对于元素值,为什么喜欢使用ElementType而不是直接使用int或者char等等? 2.结论 对于int get_result(int x); 和 int get_result(ElementType x);这一类函数具有相关参数时 我们可能在某个时刻需要使用的int类 阅读全文
posted @ 2023-09-17 20:35 DawnTraveler 阅读(511) 评论(0) 推荐(0)
摘要:1.问题 今天在学习压缩存储三角矩阵的时候,由于要计算上三角前(i-1)的个数,上方呈一梯形形状,就有想法梯形面积公式和等差数列求和公式及其相似,之间有什么联系呢? 2.解决 引用一篇文章 有关链接:https://zhuanlan.zhihu.com/p/555204644?utm_id=0 阅读全文
posted @ 2023-09-17 18:34 DawnTraveler 阅读(63) 评论(0) 推荐(0)
摘要:1.题目 2.算法思路 3.代码 // // Created by trmbh on 2023-09-13. // // #include <stdio.h> #include <stdlib.h> #include <conio.h> #define TRUE 1 #define FALSE 0 阅读全文
posted @ 2023-09-13 15:07 DawnTraveler 阅读(104) 评论(0) 推荐(0)
摘要:1.题目 使用迭代,并通过辗转相除法求最大公约数 2.代码 // // Created by trmbh on 2023-09-13. /* 辗转相除法 */ // #include "stdio.h" int fun(int m, int n) { int r; if (n > m) return 阅读全文
posted @ 2023-09-13 11:17 DawnTraveler 阅读(48) 评论(0) 推荐(0)
摘要:1.题目 例3.6打印杨辉三角形。 利用队列打印杨辉三角形。杨辉三角形的图案如图3.18所示。 2.算法思路 3.代码 // // Created by trmbh on 2023-09-12. // #include <stdio.h> #include <stdlib.h> #define TR 阅读全文
posted @ 2023-09-13 10:24 DawnTraveler 阅读(26) 评论(0) 推荐(0)
摘要:1.题目简述 2.算法思路 3.代码 // // Created by trmbh on 2023-09-11. // #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define FALSE 0 # 阅读全文
posted @ 2023-09-12 20:16 DawnTraveler 阅读(8) 评论(0) 推荐(0)
摘要:1.题目 设表达式中包含三种括号:圆括号、方括号和花括号,它们可互相嵌套,如({})或({([][()])})等均为正确的格式,而{[])}、{()]或([]}均为不正确的格式。 2.算法分析 3. // // Created by trmbh on 2023-09-11. // #include< 阅读全文
posted @ 2023-09-11 17:45 DawnTraveler 阅读(52) 评论(0) 推荐(0)
摘要:1.题目 例2.9建立一个带头结点的线性链表,用以存放输人的二进制数,链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。 2.算法分析 3.代码 /* 二进制加1 */ void BinAdd(LinkList l) { int temp; Node *pa = l- 阅读全文
posted @ 2023-09-11 11:43 DawnTraveler 阅读(36) 评论(0) 推荐(0)
摘要:1.题目 例2.8已知带头结点单链表L,设计算法实现:以表中第一元素作为标准,将表中所有值小于第一个元素的结点均放在第一结点之前,所有值大于第一元素的结点均放在第一元素结点之后。 2.算法分析 3.代码 //顺序调整 void changeList(LinkList L){ int temp; /* 阅读全文
posted @ 2023-09-11 11:16 DawnTraveler 阅读(167) 评论(0) 推荐(0)
摘要:1.题目 例2.7 算法实现带头结点单链表的就地逆置问题。 2.算法思想 3.代码 //就地逆置 void ReverseList(LinkList L){ Node *p, *q; p = L->next; L->next = NULL; while (p){ q = p->next; p->ne 阅读全文
posted @ 2023-09-11 10:43 DawnTraveler 阅读(19) 评论(0) 推荐(0)
摘要:1.题目 例2.6 设计一个高效的算法,从顺序表L中删除所有值为x的元素,要求时间复杂度为0(n)空间复杂度为0(1)。 2.算法思想 3.代码 void DeleteX(SeqList LA, SeqList *LC, int x) { int i = 0, j = 0; while (i <= 阅读全文
posted @ 2023-09-11 09:54 DawnTraveler 阅读(256) 评论(0) 推荐(0)
摘要:4,有n个整数,使前面各数顺序向后m个位置,最后m个数变成最前面m个数,见图 8.43。写一函数实现以上功能在主函数中输入个整数和输出调整后的n个数。 我的代码: 1.使用双向链表 void MoveDLink(DoubleList head, int m, int n) { /* 寻找原链表第n- 阅读全文
posted @ 2023-09-10 20:33 DawnTraveler 阅读(39) 评论(0) 推荐(0)
摘要:1.题目介绍 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 阅读全文
posted @ 2023-09-10 20:14 DawnTraveler 阅读(22) 评论(0) 推荐(0)
摘要:1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums 阅读全文
posted @ 2023-09-10 19:27 DawnTraveler 阅读(20) 评论(0) 推荐(0)
摘要:1.题目: 已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度。 链表结点定义如下: struct _lnklist{ ElemType data; struct _lnkl 阅读全文
posted @ 2023-09-10 19:25 DawnTraveler 阅读(54) 评论(0) 推荐(0)
摘要:例2.3 有两个链表LA和LB,其元素均为非递减有序排列,编写算法,将它们合并成一个链表LC,要求LC也是非递减有序排列。 例如,LA=(2,2,3),LB=(1,3,3,4),则LC=(1,2,2,3,3,3,4)。 #include <stdio.h> #include <stdlib.h> # 阅读全文
posted @ 2023-09-10 11:04 DawnTraveler 阅读(36) 评论(0) 推荐(0)