各大公司数据结构与算法面试题解答(一)

article/2025/10/16 0:46:28

    还有一年就要找工作了,从现在开始找些公司的数据结构和算法的题来做一做,不定时贴出笔试面试题代码。


1.创新工场:

求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}

算法描述:

1.      对原序列进行递减排序(选择快速排序法);

2.      删掉重复数字;

3.      得到子序列。

C++源代码:

#include "stdafx.h"

#include <iostream>

using namespace std;

#define MAX_SIZE 20

 

void FastSort(int a[],int left,int right)

{

       if(left< right)

       {

              inti = left,j = right,k;

              inttemp = 0;

              temp= a[left];

              while(i< j)

              {

                     while(j>i&&a[j]<temp)

                            j--;

                     a[i]= a[j];

                     while(i<j&&a[i]>= temp)

                            i++;

                     a[j]= a[i];

              };

              a[i]= temp;

              FastSort(a,left,i-1);

              FastSort(a,i+1,right);

       }

 

}

void GetChildSet(int a[],int p[],intn,int& length)

{

       length= 0;

       intcount = 0,i,j;

       inttemp[MAX_SIZE] = {0};

       for(j=0;j<n;j++)

              if(a[j]==a[j+1])

              {

                     temp[j+1]=1;

                     count++;

              }

       for(i=0,j=0;i<n,j<n-count;i++)

              if(0==temp[i])

              {

                     p[j]=a[i];

                     j++;

              }

       length= n-count;

}

 

int main(int argc, char* argv[])

{

       inta[MAX_SIZE] = {4,8,9,41,11,14,4,25,36,2,1,1,4,8,58,44,44,12,12,39};

       intlength = 0;

       FastSort(a,0,MAX_SIZE-1);

       intp[MAX_SIZE];

       GetChildSet(p,a,MAX_SIZE,length);

       for(inti=0;i<length;i++)

              cout<<p[i]<<endl;

       return0;

}

运行结果:

 

 

2将一整数序列逆序(要求递归实现)

算法描述:

1当满足first<last时直接交换序列首位和末尾位元素;

2.递归调用(注意递归退出条件:必须是变量first大于或等于last)

C++源代码:

#include "stdafx.h"

#include <iostream>

using namespace std;

#define MAX_SIZE 10

 

void Conver(int a[],int first,int last)

{

       inttemp = a[first];

       if(first== last||first > last)

              return;

       elseif(first<last)

       {

              a[first]= a[last];

              a[last]= temp;

       }

       Conver(a,first+1,last-1);

}

 

int main(int argc, char* argv[])

{

       inta[MAX_SIZE] = {1,2,3,4,5,6,7,8,9,10};

       Conver(a,0,9);

       for(inti = 0;i < MAX_SIZE;i++)

              cout<<a[i]<<endl;

}

运行结果:

 

3将一整数逆序后放入一数组中(要求递归实现)如:12345逆置后为54321

算法描述:

1分割出整数的每一个位,方法n%10;

2.每一次分割都是得到整数最后一个位,数组索引值要从第0开始

C++源代码:

#include "stdafx.h"

#include <stdio.h>

void convert(int *result, int n)

{

 if(n>=10)

  convert(result+1, n/10);

 *result = n%10;

}

 

int main(int argc, char* argv[])

{

      int n = 123456789;

int *result = new int[10];

 convert(result, n);

 printf("%d:", n);

 for(int i=0; i<9; i++)

              printf("%d", result[i]);

printf("\n");

}

运行结果:

 

 

4 递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)

算法描述:

与求一个序列的转置类似。

C++源码

#include "stdafx.h"

#include <stdio.h>

bool Fun(char *s, int first,int last)

{

       if(first< last)

              if(s[first]== s[last])

              {

                     Fun(s,first+1,last-1);

              }

              else

                     returnfalse;

       elseif(first > last)

              returnfalse;

       else

              returntrue;

}

 

int main(int argc, char* argv[])

{

       char*s = "abcdedcba";

       if(Fun(s,0,8))

              printf("%sis plalindrome!",s);

       else

              printf("%sisn't plalindrome!",s);

       printf("\n");

}

运行结果:


5 华为笔试

分解成质因数(如435234=251*17*17*3*2)

算法描述:

1 寻找一个整数的质因数方法从2开始遍历,依次查找

C++源代码:

#include "stdafx.h"

#include <stdio.h>

void Prime(int m,int n)

{

       if(n<m||n==m)

       {

              while(m%n!=0)

                     n++;

              m/= n;

              printf("%d*",n);

              Prime(m,n);

       }

       elsereturn;

}

 

int main(int argc, char* argv[])

{

       intn = 1000;

       printf("%d=",n);

       Prime(n,2);

       printf("\n");Prime(1000,2);

       printf("\n");

}

运行效果:

 

 



http://chatgpt.dhexx.cn/article/rED1B47K.shtml

相关文章

数据结构面试题整理

一 数据结构 1.你熟悉什么数据结构&#xff1f; 数组 链表 栈 队列 哈希 二叉树 二叉查找树 二叉堆 b树 b树 2.b树 b树 b*树 b和b都是节点可以有很多子节点&#xff0c;区别是b树所有的节点都可以存储关键字&#xff0c;而b树只有叶子节点存储关键字&#xff0c;适用于数据库…

数据结构与算法三十题,弄懂这些面试就够了!

https://www.toutiao.com/a6649963989537128967/ 2019-01-24 15:36:35 国外 IT 教育学院 Educative.io 创始人 Fahim ul Haq 写过一篇过万赞的文章《The top data structures you should know for your next coding interview》,总结了程序员面试中需要掌握的 8 种数据结构知识…

数据结构与算法面试知识点汇总(超全)

文章目录 一、哈希函数和哈希表01 哈希函数02 哈希表 二、布隆过滤器三、一致性哈希四、并查集01 具体实现02 优化03 代码实现 五、前缀树&#xff08;trie树&#xff09;六、B树和B树七、线段树01 线段树的优势02 线段树实现 一、哈希函数和哈希表 01 哈希函数 哈希函数&…

《数据结构》十道链表经典面试题多种方法深度解析

目录 ⛰️一、题目解析 &#x1f5fb;1.1删除链表中等于给定值 val 的所有节点&#xff08;力扣&#xff09; &#x1f5fb;1.2反转一个单链表。&#xff08;力扣&#xff09; &#x1f5fb;1.3给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。如果有…

数据结构和算法常见面试问题总结,含答案

0. 写在前面 总导航在此 这些问题是我备考数据结构和算法的过程中&#xff0c;详细总结的常见面试问题和答案。逐个搜索并记录下来&#xff0c;花了很大的精力&#xff01;如果想要获取源文件的话&#xff0c;可以关注我的微信公众号&#xff1a;小梁说代码&#xff0c;获取嘿…

(六)数据结构面试必问

什么是链表、队列、栈&#xff1f; 链表&#xff1a; 当需要存储多个相同数据类型的时候&#xff0c;可以使用数组存储&#xff0c;数组可以通过下标直接访问&#xff0c;但数组有个缺点就是无法动态的插入或删除其中的元素&#xff08;特别是操作第一个位置上的元素&#xff…

数据结构常见面试题

链表是最基本的数据结构&#xff0c;面试官也常常用链表来考察面试者的基本能力&#xff0c;而且链表相关的操作相对而言比较简单&#xff0c;也适合考察写代码的能力。链表的操作也离不开指针&#xff0c;指针又很容易导致出错。综合多方面的原因&#xff0c;链表题目在面试中…

面试中常见的数据结构

上次在面试时被面试官问到学了哪些数据结构&#xff0c;那时简单答了栈、队列/(ㄒoㄒ)/~~其它就都想不起来了&#xff0c;今天有空整理了一下几种常见的数据结构&#xff0c;原来我们学过的数据结构有这么多~ 首先&#xff0c;先来回顾下C语言中常见的基本数据类型吧O(∩_∩)O …

数据结构算法常见面试考题

&#xff08;1&#xff09; 红黑树的了解&#xff08;平衡树&#xff0c;二叉搜索树&#xff09;&#xff0c;使用场景 把数据结构上几种树集中的讨论一下&#xff1a; 1.AVLtree 定义&#xff1a;最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为…

八大数据结构及常见面试题

几乎所有的问题都需要面试者对数据结构有深刻的理解。无论你是初入职场的新兵(刚从大学或者编程培训班毕业)&#xff0c;还是拥有几十年经验的职场老鸟。 即便是对于一些非常基础的工作来说&#xff0c;学习数据结构也是必须的。那么&#xff0c;就让我们先从一些基本概念开始入…

数据结构面试、数据结构考研复试——常见问题以及回答

说明&#xff1a;这些是自己整理回答的答案 可以借鉴 也可能存在错误 欢迎指正 文章目录 逻辑结构与物理结构的区别算法常见的数据结构链表存储结构和顺序存储结构的区别数组和链表的区别头指针和头结点的区别线性链表判断整个链表是否有环&#xff0c;如何找到这个环单链表和…

架构设计分布式数据结构与算法面试题(2020最新版)

Java面试总结&#xff08;2021优化版&#xff09;已发布在个人微信公众号【技术人成长之路】&#xff0c;优化版首先修正了读者反馈的部分答案存在的错误&#xff0c;同时根据最新面试总结&#xff0c;删除了低频问题&#xff0c;添加了一些常见面试题&#xff0c;对文章进行了…

数据结构面试题以及答案整理

参考网络整理的一些问题 一、什么是数据结构&#xff1f; 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。结构包括逻辑结构和物理结构。 数据的逻辑结构包括4种 (1)集合&#xff1a;数据元素之间除了有相同的数据类…

数据结构面试常见问题总结

数据结构面试常见问题总结 写在前面 本文记录了一些数据结构面试常见问题&#xff0c;本意用于考研复试&#xff0c;以下面试题为网上整理的问题以及自己加入的一些问题&#xff0c;答案仅供参考&#xff01; Q&#xff1a;数据结构三要素 A&#xff1a;逻辑结构、物理结构、…

mysql 驱动包 mysql-connect-java

mysql的驱动包 mysql-connect-java 内部封装了jdbc: jdbc(java database connectivity):本身是由一组接口组成 , 可以使得Java编译来访问各种数据库无需自己实现接口,这些接口的实现类由第三方数据库厂商实现 jdbc的核心 接口或类作用DriverManager类创建数据库的连接Conne…

Mysql 驱动包mysql-connector-java-8.0.25.jar下载

安装地址 https://downloads.mysql.com/archives/c-net/ 按需选择所需版本&#xff0c;点击Download即可下载&#xff1b; 网盘下载地址&#xff1a; 需要的小伙伴&#xff0c;请关注微信公众号: Transkai, 或者扫描下方公众号二维码&#xff0c;回复关键字&#xff1a;mysql驱…

下载MySQL驱动程序

下载步骤&#xff1a; 第一步&#xff1a;进入MySQL官方网站&#xff0c;并选择DOWNLOADS和Community。 第二步&#xff1a;选择MySQL Connectors 第三步&#xff1a;选择Connector/J 第四步&#xff1a;进入下面界面&#xff0c;找到下面的Generally available (GA)…

【java】Java连接mysql数据库及mysql驱动jar包下载和使用

文章目录 JDBCJDBC本质&#xff1a;JDBC作用&#xff1a;跟数据库建立连接发送 SQL 语句返回处理结果 操作流程和具体的连接步骤如下&#xff1a;操作步骤&#xff1a;需要导入驱动jar包 mysql-connector-java-8.0.22.jar注册驱动获取数据库连接对象 Connection定义sql获取执行…

Mysql-connector-java驱动包(最新版下载详细教程)

步骤如下&#xff1a; 1.进入下载官网 https://dev.mysql.com/downloads/ 2.点击Connector/J 3.选platform Independent选项 4.选zip 5.选择不登陆进行下载 6.自己选择下载到哪个文件夹即可下载成功

Java连接MySQL mysql-connector-java-bin.jar驱动包的下载与安装

eclipse在连接mysql数据库的时候要通过mysql驱动包进行连接 首先进入官网中----官网地址&#xff1a;https://dev.mysql.com/ 进入官网中选择DOWNLOADS&#xff08;下载&#xff09; 2. 选择下载中的mysql-connectors 3. 选择connector/J J指的是Java 4.接下在选择操作系统…