
数据结构和算法
优秀的邓宗磊
这是一个优秀的人呢
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法题2-3
【代码】算法题2-3。原创 2023-01-14 14:24:02 · 437 阅读 · 2 评论 -
算法题,python,递归,汉诺塔问题,摆盘子
算法题,python,递归,汉诺塔问题,摆盘子题目:汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。太简单了,没啥要分析的,注意一下函数的语义就啥都理解了。代码://函数语义:n个盘子,从A柱子作为起始,通过空柱子B,移到目标柱子C上原创 2022-02-19 13:03:33 · 334 阅读 · 0 评论 -
算法题,c++,数据结构,判断组内成员关系,是否同组,华为试题1
算法题,c++,数据结构,判断组内成员关系,是否同组,华为试题1一、题目:1、输入人数和行数,2、一次输入带有编号的人的编号和判断标志judge,judge为1表示判断二者组关系,为0表示将二者归为一组,组员关系有传递性,比如1和2是组员,1和3是组员,2和3就是组员3、组员关系判断输出两种消息,是组员则输出“we are a team”,不是组员则输出“we are not a team”,输入人员不存在或者行数超过时输出“da pian zi”二、输入输出示例:输入:5 71 2 01原创 2022-02-10 21:51:13 · 1890 阅读 · 0 评论 -
算法题,c++,字符转换数字+排序+动态规划,搬木条,一或两个一层,上下宽度一样,木条必须用完,求最大高度,或者0,华为试题2
算法题,c++,字符转换数字+排序+动态规划,搬木条,一或两个一层,上下宽度一样,木条必须用完,求最大高度,或者0,华为试题200题目:华为试题200搬木条,1、一层可以方一个木条或者两个木条,每个木条有长度,要让每一层的木条长度相等,上下宽度一样,2、所有木条必须用完,3、求最大高度,或者0,分析:说的花里胡哨,其实是基于排序和动态规划的一道算法题。1、输入的是一堆int,分别代表指定长度的木条2、木条想要上下长度一致,并且高度最高,其最大长度必须是:最大木条长度 或者 最大木条长度+最原创 2022-02-10 20:09:31 · 473 阅读 · 0 评论 -
算法题,c++,回溯算法,获得1-5所有无重复全排列组合,获得所有表示需要暴力枚举的回溯算法,练手与科普
算法题,c++,获得1-5所有无重复全排列组合,获得所有表示需要暴力枚举的回溯算法,回溯算法练手与科普题目:获得1-5五个数字字符的所有排列方式。分析:注意审题之“所有”,提到所有情况肯定需要使用到回溯算法。回溯算法科普:1、基于函数递归的暴力枚举算法2、枚举的尽头使用return继续返回3、使用if判断舍弃部分枚举,又叫“剪枝”,因为枚举的递归算法结构上很像一棵树。代码://约定空格处为无字符或空字符//函数的入参有结果集Res,数据集Data,当前数据unit//数据集在每一级递原创 2022-02-08 21:05:34 · 931 阅读 · 0 评论 -
算法题,c++,滑动窗口,和为 K 的最少斐波那契数字数目,迭代定区间,依次相减,加次数
算法题,c++,和为 K 的最少斐波那契数字数目,迭代定区间,依次相减,加次数O、题目:LeetCode给你数字 k ,请你返回和为 k 的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次。斐波那契数字定义为:F1 = 1F2 = 1Fn = Fn-1 + Fn-2 , 其中 n > 2 。数据保证对于给定的 k ,一定能找到可行解。一、分析:1、斐波那契数列是通过两个1反复求和扩大形成的单调递增数列,例如:1,1,2,3,5,8,13,21,34,55,89,144原创 2022-02-03 21:22:36 · 694 阅读 · 0 评论 -
算法题,c++,整数反转,数学方法,注意反转的运算过程中结果发生越界导致发生错误
算法题,c++,整数反转,数学方法,注意反转的运算过程中结果发生越界导致发生错误题目:leetcode1、给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。2、如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。3、假设环境不允许存储 64 位整数(有符号或无符号)。分析:1、整数倒转操作本身没什么难度,2、只要循环对10取余,然后余数依次原值乘以10加新值即可,3、需要注意的是每次余数乘以10以后可能会越界,所以得在每次原创 2022-02-02 16:24:21 · 514 阅读 · 0 评论 -
算法题,c++,反转单词前缀,没什么难度,但考验对string的API的掌握
算法题,c++,反转单词前缀,没什么难度,但考验对string的API的掌握这个算法题主要考验对string提供的API的掌握情况,此处需要用到的API有:思路:1、查找到对应字符在字符串中的下标2、截取字符串中从0到对应下标+1的子字符串用于倒转3、通过截取出来的子字符串,将原字符串中的子字符串的内容进行倒转代码:string reversePrefix(string word, char ch){ //先通过string自带的API对字符串中的特定字符进行查找,find的作用就是查原创 2022-02-02 10:08:42 · 286 阅读 · 0 评论 -
算法题,c++,分治算法,合并K个升序链表,原链表修改链接顺序降低空间复杂度,分治合并降低时间复杂度
算法题,c++,合并K个升序链表,原链表修改链接顺序降低空间复杂度,分治合并降低时间复杂度题目:leetcode给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。链表结点结构: typedef struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x),原创 2022-02-01 18:48:59 · 477 阅读 · 0 评论 -
算法题,c++,排序+动态规划,查找游戏中的弱角色
算法题,c++,查找游戏中的弱角色leetcode上面的题目,题目具体内容:1、你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 。给你一个二维整数数组 properties ,其中 properties[i] = [attacki, defensei] 表示游戏中第 i 个角色的属性。2、如果存在一个其他角色的攻击和防御等级 都严格高于 该角色的攻击和防御等级,则认为该角色为 弱角色 。更正式地,如果认为角色 i 弱于 存在的另一个角色 j ,那么 attackj > att原创 2022-01-29 18:20:06 · 2590 阅读 · 0 评论 -
算法题,c++,动态规划,查找字符串中的最长回文字段,遍历字符,中心扩散查询
算法题,c++,查找字符串中的最长回文字段,遍历字符中心扩散查询从给定的字符串中找出最长的回文字段,这里使用的方法是:1、挨个遍历字符串中的每个字符,2、每到一个字符,就查看其前一个字符和后一个字符是否相等3、当前字符位置记录为位置iPos,前后相同字符的数量记录为偏移量iDeviation注意判断条件:1、最往前是字符串头,最往后是字符串尾,,不能越界,这是重要的判断条件2、挨个遍历字符默认每一个回文字段是奇数位,但有偶数位的情况,因此需要将偶数位的判断放在前面,两种的判断方式有一点点差别。原创 2022-01-25 20:13:43 · 768 阅读 · 0 评论 -
算法题,c++,动态规划,停车场的最小停车数量,小车1个位置,大车2个位置,卡车3个位置
算法题,停车场的最小停车数量,小车1个位置,大车2个位置,卡车3个位置审题://停车场最少能停几辆车//卡车占连续三位,大车占连续2位,小车占连续一位//1为不能停,0为能停代码:只需要注意判断连续性时避免访问越界就可以了。int MinCarNum(vector<int>& VecData){ int iNumOfCar = 0; int iCount = 0; while(iCount < VecData.size()) { //小车 if (V原创 2022-01-23 22:15:15 · 810 阅读 · 0 评论 -
算法题,c++,动态规划,基于stl容器vector进行约瑟夫环的实现和复用
算法题,基于stl容器vector进行约瑟夫环的实现和复用一、审题:约瑟夫环,一共m个人围成一圈,从第一个开始数1,数到n的出圈,输出剩余n-1个人的原有编号。例子:50个人围一圈,从第一个开始数1,数到3的出圈,输出剩余2个人的原有编号。二、代码结构:1、使用类封装约瑟夫游戏,对外只暴露Game函数,用于调用约瑟夫游戏。2、维护容器vector和约瑟夫3个功能函数,1个逻辑函数,这些组合在一起作为约瑟夫游戏的完整系统。三、功能函数和逻辑函数组成的完整系统1、组合成环这个函数用于提供一个原创 2022-01-23 21:52:49 · 2754 阅读 · 0 评论 -
算法题,c++,动态规划,寻找两个有序数组的中值,双迭代器扫描,时间复杂度O(m+n),空间复杂度O(1)
寻找两个有序数组的中值,LeetCode(困难)使用的是双迭代器扫描的方法,时间复杂度O(m+n),空间复杂度O(1)。代码块中注释显示不清晰,就把代码直接贴一下。//双迭代器扫描法,时间复杂度O(m+n),空间复杂度O(m+n)double findMedianSortedArrays(vector& nums1, vector& nums2){//定义用于返回的中位数,定义时就初始化为0double douMedian = 0;//数字总个数,定义时就初始化int iN原创 2021-10-31 14:50:29 · 209 阅读 · 0 评论 -
c语言,线索二叉树,前序遍历建立,中序遍历线索化,中序遍历输出结果
c语言下的线索二叉树的前序遍历建立,中序遍历线索化,中序遍历输出结果结点和树数据准备typedef char ElemType;//线索存储标志位//Link表示指向左右孩子的指针//Thread表示指向前驱后继的线索typedef enum {Link, Thread}PointerTag;typedef struct BiThrNode{ char data; struct BiThrNode* lchild, * rchild; PointerTag ltag; Poin原创 2021-12-19 19:15:42 · 1710 阅读 · 0 评论