笔试题-算法
尤蒂莱兹
渴望伯乐的失业程序员
展开
-
笔试题10-顺时针打印矩阵
原题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7] 思路: 1.用x,y存储当前遍历到的行位置和列位置,然后用for循环遍历行,再由那一行遍历列,再从最后一行最后一个元素遍历回去,最后从原创 2020-06-05 11:02:52 · 141 阅读 · 0 评论 -
笔试题9-工厂生产问题
题目: 假设第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件 … … 以此类推,请编程计算出第n天总共可以量产的手机数量。 输入例子1: 11 输出例子1: 35 思路: 用一层for循环遍历天数,一层for循环遍历能够增加的次数,当i超出了规定天数,就返回对应的总和。 代码: int solution(int n) { // write code here int sum=0,t=1; for(int原创 2020-06-03 16:11:38 · 792 阅读 · 0 评论 -
【笔试题2】随机生成100个整数,再从里面随机挑选10个数,将这10个数按照奇偶数分成两组,每组数从大到小排列,请编码实现
思路: 1.首先将100个整数随机值存在a数组中 2.用for循环和rand函数从100个整数中选出10个序号,将a数组对应的序号的值赋给从零到10赋给b数组 3.用if语句判断奇偶性,用不同的指针存放奇数和偶数 4.用冒泡排序算法将两个指针对应的数组进行降序排序 5.输出两个指针对应数组的值 #include <iostream> #include <cstdlib> #include <ctime> #define N 100 using namespace std;原创 2020-05-24 12:43:06 · 1579 阅读 · 0 评论 -
【笔试题1】按输入的两个数进行幂级数求和,如s=2的0次方+2的一次方+2的n次方,编码实现
最近找工作,几天没更新。现在回到老家继续更新。 思路: 1.首先用for循环遍历需要计算的次方数, 2.再用for循环将每次遍历的次方数从0加到上一个for循环遍历到的次方数。 3.将每个需要计算的次方数之和相加,得到结果。 #include<iostream> using namespace std; int func(int mi, int xiang) { int num,sum=0; num = 1; for (int i = 0; i <= mi; i++) { fo原创 2020-05-24 10:46:02 · 675 阅读 · 0 评论 -
笔试题8-数位之积
原题目: 现给定任意正整数 n,请寻找并输出最小的正整数 m(m>9),使得 m 的各位(个位、十位、百位 … …)之乘积等于n,若不存在则输出 -1。 输入例子1: 36 输出例子1: 49 输入例子2: 100 输出例子2: 455 思路: 先判断是否小于10,如果小于十,就直接可以返回10+这个数 大于十的话,用for循环和while循环有无对应的乘积数,如果没有,就返回-1,如果有就返回对应的数位积。 代码: int solution(int n) { // write原创 2020-06-03 16:00:19 · 733 阅读 · 0 评论 -
笔试题7-工号问题
原题目: 每个新同事都需要分配一个工号。分配工号具体规则是: 将N(N<10000)个人排成一排,从第1个人开始报数;如果报数是M的倍数就出列,报到队尾后则回到队头继续报,直到所有人都出列; 最后按照出列顺序为每个人依次分配工号。 输入例子: 6 3 输出例子: 3 6 4 2 5 1 例子说明: 6个人排成一排,原始位置编号即为1-6。最终输出3 6 4 2 5 1表示的是原来编号为3的第一个出列,编号为1的最后一个出列。 思路: 1.用for循环给每个位置从1开始编号 2.用变量代表报数是3的位置原创 2020-06-03 14:59:26 · 1762 阅读 · 0 评论 -
笔试题6 买卖股票的最佳时机
原题目: 给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。原创 2020-05-26 22:32:36 · 191 阅读 · 0 评论 -
【笔试题5】找出数组和最大的子数组
原题目: 给出一个整型数组,该数组中包含正数与负数,在这个数组中找出一个子数组,使得该子数组相加的和最大,要求这个子数组的元素在原数组中是连续排列的,子数组元素个数最少为1个,请输出该子数组以及孩子数组相加对应的和。如:给出的数组为{-1,3,-2,5},则子数组为{3,-2,5},子数组的和为6。函数原型:void FindSubArray(int a[],int n) 思路: 1.先用for循环和二维数组将数组对应的序号的值存储起来,然后用for循环将序号后面的数值分别相加存储在二维数组中(注意第一个序原创 2020-05-25 20:37:27 · 608 阅读 · 0 评论 -
【笔试题4】给出一个字符串,该字符串是由大写的字母构成,要求你编写函数实现:把大写字母放在后面而小写字母放在前面,小写字母与大写字母各自都按照由小到大进行排列。
原题目: 给出一个字符串,该字符串是由大写的字母构成,要求你编写函数实现:把大写字母放在后面而小写字母放在前面,小写字母与大写字母各自都按照由小到大进行排列。例如:给出的原始字符串是“AazdEBbyCzc”,则整理出来的字符串是“abcgzABCEZ”函数原型 void MoveString(char*str)。 思路: 1.先用strlen求出字符串大小 2.再用冒泡排序将字符从大到小排列好 3.用for循环和if判断语句将a到z的字符从后面换到前面 ...原创 2020-05-25 19:06:17 · 1374 阅读 · 0 评论