数据结构与算法分析
文章平均质量分 58
数据结构与算法分析有关
Pretend ^^
知来者之可追
展开
-
删除单链表中绝对值相同的节点
因为|data|≤n,故辅助数组a的大小为n+ 1,各元素的初值均为0。依次扫描链表中的各结点,同时检查a[|data]的值,如果为0,则保留该结点,并令a[|data|] = 1;否则,将该结点从链表中删除。算法的核心思想是用空间换时间。使用辅助数组记录链表中己出现的数值,从而只需对链表进行一趟扫描。时间复杂度为O(m),空间复杂度为O(n)原创 2022-11-25 19:29:35 · 853 阅读 · 0 评论 -
斐波那契数列的几种求解方式及复杂度分析
斐波那契数列:f(n)=f(n-1)+f(n-2); n>=2f(0)=0; f(1)=1;即有名的兔子繁衍问题。现在我们去面试,面试官要求我们写出求解斐波那契数列指定项的函数,可能乍一听很简单,我们在大一的c语言课上就学过递归求解斐波那契数列的指定项,于是大笔一挥,写下如下的第一种解法:一、递归求解int fibonacci(int n){ if (n<=0) { return 0; } if (n==1) { ret原创 2022-01-20 17:19:47 · 3600 阅读 · 1 评论 -
部分背包问题-贪心算法
部分背包问题-贪心算法问题描述有一个调制饮品比赛⚫参赛者拥有容量为 c ml的杯子,可任选不超过体积上限的饮料进行混合⚫ 调制饮品价格为各所使用饮料的价格之和,所得饮品价格之和最高者获胜每种饮品有对应的价值和体积,应该如何使调制的饮品价格最高?输入数据第一行输入物品数量n和背包容量c。接下来是n行数据,表示每个饮料的价值的体积。输入输出样例输入:5 80060 60010 25036 20016 10045 300输出:117思路分析这是一个典型的贪心问题,要求调制原创 2021-04-19 20:19:07 · 2149 阅读 · 9 评论 -
0-1背包 动态规划
0-1背包-动态规划问题描述超市允许顾客使用一个可以承受重量为c的背包,选择一件或多件商品带走每种商品有对应的价值和重量,如何带走总价最多的商品?输入数据第一行输入物品数量n和背包承重c。接下来是n行数据,表示每个商品的价值和重量。输出数据一共2行第1行输出最优解,即商品的最高总价。第2行输出选择的商品编号。输入输出样例输入:5 1324 102 39 410 59 4输出:最优解为28选择的商品为: 3 4 5思路分析构造备忘录f[i,c] ,原创 2021-04-20 20:27:38 · 310 阅读 · 0 评论 -
LeetCode 345.反转字符串中的元音字母
反转字符串中的元音字母-力扣345问题描述给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。示例1输入:s = “hello”输出:“holle”示例2输入:s = “leetcode”输出:“leotcede”提示1 <= s.length <= 3 * 105s 由 可打印的 ASCII 字符组成思路分析采取从两边向中间搜索的策略p,q分别记录从前搜索和从后原创 2021-08-19 20:25:54 · 219 阅读 · 0 评论 -
LeetCode 443.压缩字符串
压缩字符串-力扣443问题描述给你一个字符数组 chars ,请使用下述算法压缩:从一个空字符串 s 开始,对于 chars 中的每组 连续重复字符 :如果这一组长度为 1 ,则将字符追加到 s 中。否则需要向 s 追加字符,后跟这一组的长度。压缩后得到的字符串 s 不应该直接返回 ,需要转储到字符数组 chars 中。需要注意的是,如果组长度为 10 或 10 以上,则在 chars 数组中会被拆分为多个字符。请在修改完输入数组后 ,返回该数组的新长度。你必须设计并实现一个只使用常量额外原创 2021-08-22 16:32:13 · 206 阅读 · 0 评论 -
LeetCode 453.最小操作次数使数组元素相等
最小操作次数使数组元素相等-力扣453问题描述给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。样例1输入:nums = [1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]样例2输入:nums = [1,1,1]输出:0提示n == nums.length1 <= num原创 2021-10-20 21:56:04 · 930 阅读 · 0 评论