![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法分析
孤独的拉普拉斯
菜鸟级程序员
展开
-
58同城笔试:后端开发编程题
1.找出二维字符数组里行字符数组所共有的字符例子:输入:{{“you”,“are”,“pig”,“dog”},{“is”,“as”,“you”,“are”},{“kik”,“you”,“are”,“aoa”}}输出:{“you”,“are”}class Solution {public: /** * * @param values string字符串二维数组 * @param valuesRowLen int values数组行数 * @param valuesColLen in原创 2020-08-31 21:42:03 · 514 阅读 · 0 评论 -
this指针与sort的爱恨情愁
this指针和sort的爱恨情愁起因楼主在刷剑指offer的时候遇到了这么一道题,把数组排成最小的数,这是题的地址。解题思路无非就是先根据新的排序规则对原数组进行排序,然后在遍历生成数即可。我们知道,C++的STL库sort非常好用,其重载形式也多种多样,而sort重载版本的第三个参数是一个二元谓词(即只接受两个参数)。于是机智的楼主很快码出来了下面的代码:class Solution {public: string minNumber(vector<int>& nums) {原创 2020-08-26 22:28:44 · 407 阅读 · 0 评论 -
合唱团
问题有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能力值...原创 2019-12-24 11:45:44 · 107 阅读 · 0 评论 -
修改案例分析的程序,输出不带有死胡同但是可以带迂回路(可能的话)的路径
修改案例分析的程序,输出不带有死胡同但是可以带迂回路(可能的话)的路径。例如,对一个输入的迷宫:案例分析的程序输出了经过处理后的迷宫图:修改后的程序应该产生从出口到老鼠初始位置的路径:[1 1] [1 2] [1 3] [2 3] [3 3] [3 4] [3 5] [4 5] [4 4] [4 3]它删除了两个死胡同:[1 4][1 5]和[3 2][3 1][4 1][4 2],但...原创 2019-10-10 10:00:27 · 129 阅读 · 0 评论 -
案例分析:迷宫问题
迷宫问题思考一下,当你陷入迷宫时该如何找到出口?纵使各位大神有千方百计,但摆在各位眼前最直接的方法就是——走就完事了。对,走就完事了,遇见分叉口随便走,倘若到了死胡同则回到当初分叉口再走其他路(“回溯”),如此反复,只要迷宫有路,那咱们总能走出去的。现如今,咱们用程序该如何去模拟呢?其实很简单,刚刚所说的系统性尝试所有路径的方法同样也适用于程序。于是乎,我们只需将刚刚描述代码化便能够解决这个问题...原创 2019-10-10 08:45:11 · 1371 阅读 · 0 评论 -
案例分析:图书馆
图书馆模拟一个生活中小型图书馆的使用程序,功能如下:1. 向图书馆添加书籍2. 向图书馆借出书籍3. 向图书馆归还书籍4. 显示图书馆当前状态5. 退出程序简单分析如下:我们需要知道书籍,作者以及读者之间的联系。一本书有作者,有书籍名,如果直接把书归为一类,作者和书籍名都是其类内成员,然后用容器装上书类,再进行相关操作,就会显得较为复杂。根据分而治之的思想,我们把其分为两类单独表示...原创 2019-10-06 15:07:29 · 1213 阅读 · 0 评论 -
案例分析:随机访问文件
随机访问文件任务:写一个通用程序,为任何类型的记录生成随机访问文件。该程序运行后生成了一个包含个人记录的文件,每条记录由5个数据成员(社会安全号码、姓名、所在城市、出生年份以及薪水)组成,该程序还生成了一个存储学生记录的学生文件,学生记录的数据成员与个人纪录相同,另外还增加了学院专业,再次使用了继承。此案例分析中,通用的随机访问文件程序能够将新记录插入文件,在文件中查找记录,还可以修改记录。文...原创 2019-10-03 10:24:00 · 964 阅读 · 0 评论 -
单向链表模板类实现
#pragma once#ifndef INT_LINKED_LIST#define INT_LINKED_LIST片template<class T>class SLLNode //结点类模板{public: SLLNode() { next = 0; } SLLNode(T e1,SLLNode *ptr = 0){ info = e1; next =...原创 2019-10-03 09:40:05 · 409 阅读 · 1 评论 -
将一个单向链表连接到另一个单向链表的末尾
3.1013.将一个单向链表连接到另一个单向链表的末尾。原创 2019-05-05 21:38:34 · 2462 阅读 · 1 评论 -
在单向链表P中所知的节点(有可能是第一个或最后一个节点)(a)之前以及(b)之后插入一个新节点。在两个操作中都不要使用循环
3.1012.在单向链表P中所知的节点(有可能是第一个或最后一个节点)(a)之前以及(b)之后插入一个新节点。在两个操作中都不要使用循环。(a)原创 2019-05-05 21:22:39 · 414 阅读 · 0 评论 -
编写一个成员函数,只扫描一次一次就能将单链表反转。
3.1011.编写一个成员函数,只扫描一次一次就能将单链表反转。题目所要求的是只扫描一次就逆转链表,那么应该边扫描边逆转链表,由于链表有数据信息和指针,所以应当对这两者的其中之一进行操作。首先来看看数据信息,如果我们用数据信息,在扫描时最多只能进行排序,而排序再一次扫描时是无法逆转链表的,所以不应用数据信息。那么如果用指针,只需在扫描时将指针逆转,就能实现链表的反转。程序如下:void L...原创 2019-04-24 14:42:56 · 278 阅读 · 0 评论 -
从链表L1中删除一些节点,其位置在有序链表L2中给出。例如,L1=(1,2,3,4,5),L2=(2,5),则删除后,L1=(1,3,4)。
3.106.从链表L1中删除一些节点,其位置在有序链表L2中给出。例如,L1=(1,2,3,4,5),L2=(2,5),则删除后,L1=(1,3,4)。原创 2019-04-19 15:36:07 · 463 阅读 · 0 评论 -
从链表上删除第i个节点。确保存在这样一个节点。
3.105.从链表上删除第i个节点。确保存在这样一个节点。void Delete_Node(List la, int i) { List p,q; int n, j=1; p = la->next; q = p; n = List_length(la); if (i<=n) { while (j!=i) { j++; q = p; p = p...原创 2019-04-19 15:23:27 · 419 阅读 · 0 评论 -
将两个单链表合并成一个有序单链表
将两个单链表合并成一个有序单链表思路:因为链表可以由结点轻松构造,所以首先需要创建单链表的元素,然后选择构造方式构造单链表,本代码为后插构造单链表。然后有了链表,怎么合并为一个有序单链表。大体可以先尝试排序构造的每个单链表,然后再在合并的时候进行有序比较排列即可。#include<stdlib.h>#include<stdio.h>#includetypedef ...原创 2019-04-19 15:18:43 · 5916 阅读 · 2 评论 -
编写一个成员函数,检查两个单链表的内容是否相同。
3.1010编写一个成员函数,检查两个单链表的内容是否相同。首先,两个单链表内容的相同应该是在两个单链表长度一致的情况下进行比较,如果长度不一致也满足不了,则必不相等。其次,只有当所有的内容一一相等时,两个单链表才相等,则剩余的所有情况均为不相等。...原创 2019-04-24 10:27:14 · 1129 阅读 · 1 评论 -
从有序链表L中删除链表L本身所给位置上的节点。例如,如果L=(1 3 5 7 8),那么删除之后,L=(3 7)。
3.108从有序链表L中删除链表L本身所给位置上的节点。例如,如果L=(1 3 5 7 8),那么删除之后,L=(3 7)原创 2019-04-22 21:52:35 · 264 阅读 · 0 评论